更多内容,请访问:
声明和定义区别
JavaScript-变量类型
JavaScript-如何使用变量
JavaScript-undefined和null区别
变量类型判断
- 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
- 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。
- constructor
构造函数
当解析函数的时候(还未执行),此时会在函数的原型对象上添加一个constructor方法,指向当前的函数。
例如:
function F() {};
const f = new F();
f.constructor === F; // true
注意:只有对象才能调用constructor,其他基础数据类型不能使用
- 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