对 JS的数据类型进行判断,首先明确JS一共有以下 7种类型:
String、Number、Boolean、null、undefined、Symbol、
Object(Function|Date|Array | RegExp…)、
const number1 = 1;const string1 = '1';const boolean1 = true;const obj1 = {a:1};const arr1 = [1,2];const function1 = function fun(){return 'fun'} ;const date = Date();const rex = new RegExp()const null1 = null;const undefined1 = undefined;const symbol1 = Symbol()'const number2 = Number(2);const number3 = new Number(3);(不推荐类似写法)const string2 = String('a')const arr2 = Array([1,2]);const arr3 = new Array([1,2,3]);
typeof
console.log(number1,typeof number1) // 'number'console.log(string1,typeof string1) // stringconsole.log(boolean1,typeof boolean1) // "boolean"console.log(obj1,typeof obj1) // "object"console.log(arr1,typeof arr1) // "object"console.log(rex,typeof rex) // "object"console.log(function1,typeof function1) // "function"console.log(date,typeof date) // stringconsole.log(null1,typeof null1) // "object"console.log(undefined1,typeof undefined1)// "undefined"console.log(symbol1,typeof symbol1) // "symbol"console.log(number2,typeof number2) // "number"console.log(number3,typeof number3) // "object"console.log('arr2',arr2,typeof arr2) // objectconsole.log('arr3',arr3,typeof arr3) // object
存在问题
- null 识别成 ‘object’
 - function 识别成 function, date识别成 ‘string’
 
other:
- Number 和 String 作为普通函数调用的时候,是把参数转化为相 应 的原始数据类型,也就是类似于做一个强制类型转换的操作,而不是默认当做构造函数 调用。此时识别是相应的 number,string
 - new Number(…),new String(…), new Array(…) 识别成相应的object
 注意和 Array 区分,Array(…)等价于 new Array(…) ,也是 object
instanceof
instanceof 用来判断 A是否为B的实例。
表达式为: A instanceof B,如果A为B的实例,则返回true,否则返回false。
当 A 的 proto 指向 B 的 prototype 时,就认为 A 就是 B 的实例。instanceof 不能用于判断原始数据类型的数据,可以用来判断对象的类型 ```javascript console.log(number1,number1 instanceof Number) // false console.log(string1,string1 instanceof String) // false console.log(boolean1,boolean1 instanceof Boolean) // false
console.log(number2,number2 instanceof Number) // false
console.log(number3,number3 instanceof Number) // true
```
