typeof判断类型的缺陷

对象字面量

观察以上结果发现:

  • typeof NaN的结果是number,所以测试一个数字是否等于NaN,但是js提供了isNaN()来判断(isNaN会对判断类型进行类型转换),es6提供了Number.isNaN(), 它比isNaN更可靠,不会进行隐式转换数字;在Number.isNaN不可以用的时候,通过 x !== x更可靠。

判断isNaN主要是来检测变量是否是可运算的。

isNaN会对传递的类型尝试转换为数字,之后对转换的值和NaN比较
  • 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关键字声明

将一个函数通过new实例化之后,那么就创建了一个对象

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容