菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
31
0

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

原创
05/13 14:22
阅读数 56298
复制代码 代码如下:

if (myObj不存在){

    声明myObj;

  }

javawww.cppcns.com

第一种写法
根据直觉,你可能觉得可以这样写:

复制代码 代码如下:

if (!myObj) 编程客栈{

    myObj = { };

  }



复制代码 代码如下:

if (!myObj) {

    var myObj = { };

  }


编程客栈
复制代码 代码如下:

var myObj;

  if (!myObj) {

    var myObj = { };

  }

第二种写法
除了var命令,还可以有另一种改写,也能得到正确的结果:

复制代码 代码如下:

if (!window.myObj) {

    myObj = { };

  }


复制代码 代码如下:

    if (!window.myObj) {

        var myObj = { };

      }

  或者写成这样:

      if (!window.myObj) {

        window.myObj = { };

      }

第三种写法

复制代码 代码如下:

if (!this.myObj) {

    this.myObj = { };

  }



第四种写法

复制代码 代码如下:

var global = this;

  if (!global.myObj) {

    global.myObj = { };

  }

第五种写法
还可以使用typeof运算符,判断myObj是否有定义。

复制代码 代码如下:

if (typeof myObj == "undefined") {

    var myObj = { };

  }

第六种写法
由于在已定义、但未赋值的情况下,myObj的值直接等于undefined,所以上面的写法可以简化:

复制代码 代码如下:

if (myObj == undefined) {

    var myObj = { };

  }

第七种写法
上面的写法在"精确比较"(===)的情况下,依然成立:

复制代码 代码如下:

if (myObj === undefined) {

    var myObj = { };

  }

第八种写法

复制代码 代码如下:

if (myObj == null) {

    var myObj = { };

  }

编程客栈

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

复制代码 代码如下:

if (!('myObj' in window)) {

    window.myObj = { };

  }

第十种写法

复制代码 代码如下:

if (!this.hasOwnProperty('myObj')编程客栈) {

    this.myObj = { };

  }

总结
1. 如果只判断对象是否存在,推荐使用第五种写法。

2. 如果除了对象是否存在,还要判断对象是否有null值,推荐使用第一种写法。

3. 除非特殊情况,所有变量都应该使用var命令声明。

4. 为了跨平台,建议避免使用window表示顶层对象。

5. 在Javascript语言中,null和undefined容易产生混淆。在可能同时涉及两者的情况下,建议使用"精确比较"运算符(===)。

本文标题: JS判断对象是否存在的10种方法总结
本文地址: http://www.cppcns.com/wangluo/javascript/103029.html

发表评论

0/200
31 点赞
0 评论
收藏
为你推荐 换一批