如何检查变量是否存在
这是一个相当不错的解决方案,用于测试变量是否存在并已初始化:
var setOrNot = typeof variable !== typeof undefined;
它最常与三元运算符结合使用,以在未初始化某些变量的情况下设置默认值:
var dark = typeof darkColor !== typeof undefined ? darkColor : "black";
封装问题
不幸的是,您不能简单地将检查封装在函数中。
您可能会想到做这样的事情:
function isset(variable) {
return typeof variable !== typeof undefined;
}
但是,如果您调用例如,这将产生参考错误。isset(foo)
并且foo
尚未定义变量,因为您无法将不存在的变量传递给函数:
未捕获的ReferenceError:未定义foo
测试功能参数是否未定义
虽然我们的isset
函数不能用于测试变量是否存在(出于上述原因),但它确实允许我们测试函数的参数是否未定义:
var a = '5';
var test = function(x, y) {
console.log(isset(x));
console.log(isset(y));
};
test(a);
// OUTPUT :
// ------------
// TRUE
// FALSE
即使没有将值for y
传递给function test
,我们的isset
函数在这种情况下也可以完美运行,因为y
在函数中test
称为undefined
值。
foo
已声明,typeof foo === 'undefined'
或者typeof foo === typeof undefined