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。
