观察以上结果发现:
-
typeof NaN
的结果是number,所以测试一个数字是否等于NaN,但是js提供了isNaN()来判断(isNaN会对判断类型进行类型转换),es6提供了Number.isNaN(), 它比isNaN更可靠,不会进行隐式转换数字;在Number.isNaN不可以用的时候,通过x !== x
更可靠。
判断isNaN主要是来检测变量是否是可运算的。
-
typeof []
的结果是object,可以通过Array.isArray()来判断,找不支持该方法的情况下,只能使用终极武器
var isArray = function (x) {
if (!Array.isArray){
return Object.prototype.toString().call(x) === '[object Array]';
}
return Array.isArray(x);
}
- ````typeof null
的结果是object,可以通过
null```
判断是否是null;
typeof x== 'object' && x == null //或者toString大法
将一个函数通过new实例化之后,那么就创建了一个对象