在JavaScript中中,对于原始类型来说,除了 null 都可以调用typeof显示正确的类型。
console.log(typeof 1); // 'number'
console.log(typeof'1'); // 'string'
console.log(typeof undefined); // 'undefined'
console.log(typeof true); // 'boolean'
console.log(typeof 4n); // 'bigint'
console.log(typeof Symbol()); // 'symbol'
但对于引用数据类型,除了函数之外,都会显示"object"。
console.log(typeof console.log); // 'function'
console.log(typeof []); // 'object'
console.log(typeof {}); // 'object'
因此采用typeof判断对象数据类型是不合适的,采用instanceof会更好,instanceof的原理是基于原型链的查询,只要处于原型链中,判断永远为true。
console.log([] instanceof Array); // true
console.log({} instanceof Object); // true