typeof判断类型对应的结果
类型 | 结果 |
---|---|
Object/null/Array | object |
Number/NaN | number |
String | string |
Function | function |
Undefined | undefined |
Boolean | boolean |
Symbol | symbol |
判断对象是否为数组
Object.prototype.toString.call(obj) === '[object Array]';
Array.isArray(obj)
obj instanceof Array
//在跨 frame 对象构建的场景下会失效obj.constructor === Array
//在跨 frame 对象构建的场景下会失效因为typeof arr 返回的是Object,所以不能用来判断是否为数组
判断是否为NaN
x!=x
//返回true即为window.isNaN()
Number.isNaN()
注意:
NaN 是 JavaScript 之中唯一不等于自身的值window.isNaN()
只对数值有效,如果传入其他值,会被先转成数值。比如,传入字符串的时候,字符串会被先转成NaN,所以最后返回true,这一点要特别引起注意。也就是说,isNaN为true的值,有可能不是NaN,而是一个字符串。(不是数值会先调用 Number 方法转化为数值)Number.isNaN()
首先判断 value 类型是不是 number;然后判断 value 是不是 NaN
拓展:indexOf不能匹配Nan,includes可以匹配Nan。