判断一个变量或对象是否存在,是一种常用的操作。我这里收集了几种。
//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 = {};
}