多种方法判断Javascript对象是否存在(2)


if (myObj == null) {
    var myObj = { };
  }


不过,虽然运行结果正确,但是从语义上看,这种判断方法是错的,应该避免。因为null指的是已经赋值为null的空对象,即这个对象实际上是有值的,而undefined指的是不存在或没有赋值的对象。因此,这里只能使用”比较运算符”(==),如果这里使用”精确比较运算符”(===),就会出错。

第九种写法
还可以使用in运算符,判断myObj是否为顶层对象的一个属性:

复制代码 代码如下:


if (!('myObj' in window)) {
    window.myObj = { };
  }


第十种写法
最后,使用hasOwnProperty方法,判断myObj是否为顶层对象的一个属性:

复制代码 代码如下:


if (!this.hasOwnProperty('myObj')) {
    this.myObj = { };
  }


总结
1. 如果只判断对象是否存在,推荐使用第五种写法。
2. 如果除了对象是否存在,还要判断对象是否有null值,推荐使用第一种写法。
3. 除非特殊情况,所有变量都应该使用var命令声明。
4. 为了跨平台,建议避免使用window表示顶层对象。
5. 在Javascript语言中,null和undefined容易产生混淆。在可能同时涉及两者的情况下,建议使用”精确比较”运算符(===)。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdzjzy.html