typeof 能判断的数据类型

489 阅读1分钟

基本数据类型

console.log(typeof 123); // number
console.log(typeof 'hello'); // string
console.log(typeof true); // boolean
console.log(typeof undefined); // undefined
console.log(typeof null); // object
console.log(typeof Symbol()); // symbol ES6新增数据类型

引用数据类型

function add() { }
const arr = [];
const obj = {}
console.log(typeof add); // function
console.log(typeof arr); // object
console.log(typeof obj); // object

由此可得,能用typeof判断的,基本数据类型里除了null,引用数据类型只有function。

那么问题来了。

  1. 如何判断一个数据是null?
  2. 如何判断一个数据是Array?
  3. 如何判断一个数据是纯粹的对象?(不是null也不是数组) 下面我们一一解答。

1. 如何判断一个数据是null?

const a = undefined;
const b = null;
console.log(a == null); // true 因此 ==null 的有可能为undefined或null,不可行
console.log(b == null); // true 

值得注意的是

console.log(null == undefined); // true
console.log(null === undefined); // false
console.log(a === null); // false
console.log(b === null); // true 因此要用 === 

结论:使用 ===

2. 如何判断一个数据是Array?

下面我们给出4种方法。

const arr = [];

console.log(Array.isArray(arr)); // true
console.log(arr instanceof Array); // true
console.log(arr.constructor === Array); // true
console.log(Object.prototype.toString.call(arr) === '[object Array]'); // true

3. 如何判断一个数据是纯粹的对象?(不是null也不是数组)

const obj = {};

console.log(Object.prototype.toString.call(obj) === '[object Object]'); // true 

这里要注意的是 [object Object] 第一个头字母小写,第二个头字母大写

完。