判断一个变量或对象是否存在,是一种常用的操作。我这里收集了几种。

//1. 最常用的一种方法。
if(typeof v == 'undefined'){
console.log("v is undefined!"); //v is undefined!
}

if (myObj === undefined) {

    var myObj = { };

 }


if (myObj == null) {

    var myObj = { };

}


//2. 检测对象的属性是否存在不必用typeof
var obj = {};
if(!obj.b){
console.log("not have attribute 'b'"); //not have attribute 'b'
}

if(window.addEventListener){
console.log("This in not IE!"); // This in not IE!
}
//3.在给对象添加属性时,也会遇到问题。 obj.property.number = 2; //TypeError: obj.property is undefined

 /**
    *    下面这种情况虽然没有出现语法错误,但实际上已经出现了错误.
    *    属性是复合型变量所特有的,而obj.property是数值型变量,不能含有属性.
    */
    var obj = {}; 
    obj.property = 2 ; 
    obj.property.number = 3;

//4.直接用未定义的对象来判断,会出错。如下例。
if(!myObj1){
myObj1 = {}; //ReferenceError: myObj is not defined
}

//5. 需要如下初始化,重点在“var”。
if (!myObj2) {
console.log("aaa"); //aaa
     var myObj2 = { };
  }

if(!window.myObj3){
console.log("3"); //3
} if(!this.myObj4){
this.myObj4 = {};
console.log(4); //4}

//或者可以这样
var global = this;
if(!global.myObj5){
global.myObj5 = {};
console.log(5);
} //8.由于在已定义、但未赋值的情况下,myObj的值直接等于undefined,所以上面的写法可以简化
var myObj6 ;
if (myObj6 == undefined) {
    var myObj6 = { };
console.log("6");
  }
//9.使用in运算符
if(!('myObj7' in window)){
console.log("7");
}

//10.使用hasOwnProperty方法
if(!this.hasOwnProperty('myObj8')){
console.log("8");
this.myObj8 = {};
}

javascript判断一个变量或对象是否存在的更多相关文章

  1. JavaScript 用七种方式教你判断一个变量是否为数组类型

    JavaScript 如何判断一个变量是否为数组类型 引言 正文 方法一 方法二 方法三 方法四 方法五 方法六 方法七 结束语 引言 我们如何判断一个变量是否为数组类型呢? 今天来给大家介绍七种方式 ...

  2. Javascript如何判断一个变量是数字类型?

    isNaN()不能判断一个变量是否为数字类型,isNaN(123)值为false,isNaN('123')值也为false.isNaN() 的实际作用跟它的名字isNaN并不一致,isNaN(NaN) ...

  3. 如何判断一个变量是数组Array类型

    在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...

  4. type,isinstance判断一个变量的数据类型

    type,isinstance判断一个变量的数据类型 import types type(x) is types.IntType # 判断是否int 类型 type(x) is types.Strin ...

  5. 如何判断一个变量是否为数组(isArray)

    在我们平时的工作中经常会用到如何判断一个变量是否为数组.常用的方法很多,有用常用框架里面的,isArray.但是关于这个isArray的实现,各有不同. 常用的方法有如下几种 1.instanceof ...

  6. C++语法小记---如何判断一个变量是不是指针

    如何判断一个变量是不是指针? 思路:模板函数 + 可变参数 + sizeof(函数) #include <iostream> #include <string> using n ...

  7. Javascript 判断一个数字是否含有小数点

    JavaScript 判断一个数字是否含有小数点,如果含有,则返回该数字:如果不含小数点,则小数点后保留两位有效数字: function hasDot(num){ if(!isNaN(num)){ r ...

  8. shell判断一个变量是否为空

    判断一个变量是否为空 . 1. 变量通过" "引号引起来 如下所示:,可以得到结果为 IS NULL. #!/bin/sh para1= if [ ! -n "$para ...

  9. empty是判断一个变量是否为“空”,而isset 则是判断一个变量是否已经设置

    1.echo和print的区别php中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此可以作 ...

随机推荐

  1. tomcat 修改默认端口8080 为 80端口

    首先,找到你的安装目录,如图: 打开server.xml文件,找到8080,如图: 将 8080  改成你想要的端口,如 80 即可.改完后,记得要重启tomcat! 将端口改成 80 后,访问就不需 ...

  2. 浅谈 HTTP 协议

    一. HTTP简介 超文本传输协议 Hyper Text Transfer Protocol 是一种用于分布式.协作式和超媒体信息系统的应用层协议 HTTP是万维网的数据通信的基础 HTTP有很多应用 ...

  3. final,buaa_oo conclusion

    UML系列作业设计架构 第13次作业 本单元的第一次作业中,涉及到了类图的解析.在着手做这单元作业的时候,需要将每一种 UmlElement 再封装,并在解析时,用 helper 单例来进行查询处理( ...

  4. go 和make的用法 区别

    Doand Make are two verbs which frequently confuse students of English. Learn the Difference between ...

  5. python 跨域

    CORS跨域请求 CORS即Cross Origin Resource Sharing 跨域资源共享, 那么跨域请求还分为两种,一种叫简单请求,一种是复杂请求~~ 简单请求 HTTP方法是下列方法之一 ...

  6. [android 应用框架api篇] bluetooth

    bluetooth接口 android.bluetooth.jar 官网网址: 接口类: https://developer.android.com/reference/android/bluetoo ...

  7. 九度oj 题目1035:找出直系亲属

    题目描述:     如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的grandchild ...

  8. Access denied for user ''@'localhost' to database 'mysql'

    ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'   在centos下安装好了mysql,用r ...

  9. 【Luogu】P1948电话线(二分SPFA)

    题目链接 二分最长的电话线长度.把所有大于这个长度的边权设成1,小于等于的设成零,然后跑SPFA看dis[n]是否>k.若>k则l=mid+1 否则r=mid-1 放代码 #include ...

  10. 算法复习——求最长不下降序列长度(dp算法)

    题目: 题目背景 161114-练习-DAY1-AHSDFZ T2 题目描述 有 N 辆列车,标记为 1,2,3,…,N.它们按照一定的次序进站,站台共有 K 个轨道,轨道遵从先进先出的原则.列车进入 ...