JS判断对象是否存在的10种方法总结(2)


if (myObj === undefined) {

    var myObj = { };

  }


第八种写法
根据javascript的语言设计,undefined == null,所以比较myObj是否等于null,也能得到正确结果:

复制代码 代码如下:


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/wdwgzz.html