我正在寻找一种执行以下操作的方法:
var test = 'I exist!';
var testNull = null;
var testUndefined;
function checkVar(varToCheck) {
return typeof varToCheck != 'undefined' && varToCheck != null;
}
console.log(checkVar(test)); // Logs true
console.log(checkVar(testNull)) // Logs false
console.log(checkVar(testUndefined)) // Logs false
console.log(checkVar(undefinedVar)) // Logs false
当它尝试执行最后一行而不是false
时,将引发错误:Uncaught ReferenceError: undefinedVar is not defined
。
我知道可以这样:
if (typeof varToCheck != 'undefined' && varToCheck != null) {
alert('something happens!')
}
但是一旦我要检查很多变量,在我的项目中使用长条件就会变得令人讨厌。有什么想法吗?
答案 0 :(得分:1)
typeof是不必要的。同样,!==将专门检查类型,而不仅仅是虚假/真实的值。
function checkVar(varToCheck) {
return varToCheck !== undefined && varToCheck !== null;
}
undefinedVar
不是一个具有undefined
值的变量,它从未被声明开头,并且如果您尝试引用它,将引发错误。
但是,如果您尝试引用未声明的对象属性,则它们不会引发错误,并将计算为undefined
。
答案 1 :(得分:0)