变量类型判断

2023-11-08 14:35:01

变量类型判断

  1. typeof

常用于基础数据类型判断:

typeof 123 === "number"; // true
typeof true === "boolean"; // true 
typeof "123" ===  "string"; // true
typeof undefined === "undefined"; // true

但是要注意:

typeof null === "object" // true

对于复杂数据类型判断,除了function之外,其他都返回object

const fn = () => {}
typeof fn === "function"; // true
typeof new Date() === "object"; // true
  1. instanceof

instanceof主要用于区分引用数据类型

instanceof运算符:用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上

比如:

const obj = {};
obj instanceof Object; // true

返回ture原因:

首先我们可以列出实例对象obj的原型链:

obj.__proto__ === Object.prototype;
Object.prototype.__proto__ === null;

从实例对象obj的原型链中可以看到Object.prototype是在obj对象的原型链上,所以obj instanceof Object返回true。

  1. constructor

构造函数

当解析函数的时候(还未执行),此时会在函数的原型对象上添加一个constructor方法,指向当前的函数。

例如:

function F() {};
const f = new F();
f.constructor === F; // true

注意:只有对象才能调用constructor,其他基础数据类型不能使用

  1. Object.prototype.toString.call
Object.prototype.toString.call({}) === "[object Object]"; // true
Object.prototype.toString.call([]) === "[object Array]"; // true
Object.prototype.toString.call(123) === "[object Number]"; // true
Object.prototype.toString.call(() => {}) === "[object Function]"; // true
Object.prototype.toString.call(null) === "[object Null]"; // true
Object.prototype.toString.call(undefined) === "[object Undefined]"; // true
Object.prototype.toString.call(true) === "[object Boolean]"; // true

目录

相关推荐
变量类型声明和定义区别如何使用变量undefined和null区别