js基础知识易错点

Posted 嘘呵呵哒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js基础知识易错点相关的知识,希望对你有一定的参考价值。

最近替另一个项目招人,要求基础知识好,随便问了一些基础题,发现了一些易错的点,总结一下。

1、判断一个空数组

  var arr = [];

  1)JSON.stringify(arr) == "[]"

  2)arr instanceof Array && arr.length == 0

  3)Array.prototype.isPrototypeOf(arr) && arr.length == 0  测试一个对象是否在另一个对象的原型链上

  注意:此处要注意,单纯判断空对象的布尔值时,为true,但是当arr == true的结果为false。

     因为,Number(arr)的值为0,当arr == true的判断时,会都转成number类型再进行判断,相当于0 == 1 ,所以为false。

2、判断一个空对象

  var obj = {};

  1)JSON.stringify(obj) == "{}";

  2)Object.prototype.isPrototypeOf(obj) && Object.keys(obj).length == 0;    

    Object.keys(obj)返回一个数组,值为对象中的各个key,但该方法有兼容性问题,IE9以下不支持。IE9以下可以使用for in方法代替,但注意,它会将原型链上的属性也枚举出来,因此添加obj.hasOwnProperty(key)进行自身属性的判断,如果此为真,则为非空对象,若为假,则为空数组。

  3)$.isEmptyObject(obj)      此方法为jquery的方法,原理也是for in遍历

    注意:原型链上的属性也是可以被枚举的,因此使用时,最好和obj.hasOwnProperty(key)一起使用

以上是关于js基础知识易错点的主要内容,如果未能解决你的问题,请参考以下文章

C++基础知识 易错点 总结(待补)

C++基础知识 易错点 总结(待补)

Java 基础知识的一些易错点

JavaGuide易错点总结

Python语言基础知识的易错点和易遗漏点

关于JQuery的技巧易错点(连载中.....)