我可以通过两种方式检查变量或属性是否存在。
第一个断言没有返回假值。
1。
var testVar;
if(!testVar){
//use testVar becuase it exists
}
第二个明确断言这两个条件。
2
var testVar;
if(testVar !== undefined && testVar !== null){
//use testVar becuase it exists
}
目的是检查对象/字符串/数字/数组是否存在,两者之间是否存在差异?
答案 0 :(得分:2)
他们是不同的。如果您尝试将{}
或1
或true
或"nyan cat"
...放入testVar
,则会返回false
} !testVar
:
var testVar = {};
if(!testVar){ //false
//will not be executed, but testVar does exist
}
检查变量是否存在的更好方法:
typeof(randomVar); //undefined
typeof(window); //object
var testVar;
if(!testVar){
//...
}
这实际上不会检查它是否存在。尝试
var testVar = "something";
if(!testVar){ //false
console.log("Exist.");
}
//nothing happens.
答案 1 :(得分:0)
您可以通过调用Object.hasOwnProperty()来检查对象属性是否存在,但是您无法检查变量是否存在,因为您无法显式引用当前堆栈帧。
答案 2 :(得分:0)
0,-0,null,false,NaN,undefined和空字符串“”将被评估为false。
如果值为0的testVar是有效条件,则第一个解决方案仍将其视为“false”。所以,第二种解决方案可以更好地为您提供服务。