我想检查变量是否有定义。例如,下面的代码会抛出一个未定义的错误
alert( x );
我如何捕捉这个错误?
我想检查变量是否有定义。例如,下面的代码会抛出一个未定义的错误
alert( x );
我如何捕捉这个错误?
当前回答
我使用一个小函数来验证变量是否已声明,这确实减少了javascript文件中的混乱量。我添加了一个值检查,以确保变量不仅存在,而且还分配了一个值。第二个条件检查变量是否也已被实例化,因为如果变量已定义但未被实例化(参见下面的示例),如果您试图在代码中引用它的值,它仍然会抛出一个错误。
未实例化- var my_variable;实例化- var my_variable = "";
function varExists(el) {
if ( typeof el !== "undefined" && typeof el.val() !== "undefined" ) {
return true;
} else {
return false;
}
}
然后你可以使用一个条件语句来测试变量是否已经被定义和实例化,就像这样…
if ( varExists(variable_name) ) { // checks that it DOES exist }
或者测试它没有被定义和实例化使用…
if( !varExists(variable_name) ) { // checks that it DOESN'T exist }
其他回答
真正测试变量是否未定义的唯一方法是执行以下操作。记住,undefined是JavaScript中的一个对象。
if (typeof someVar === 'undefined') {
// Your variable is undefined
}
这个线程中的其他一些解决方案会让你相信一个变量是未定义的,即使它已经定义了(例如,值为NULL或0)。
void操作符对于传递给它的任何参数/表达式都返回undefined。因此,您可以根据结果进行测试(实际上,一些微型程序将代码从undefined更改为void 0以节省几个字符)
例如:
void 0
// undefined
if (variable === void 0) {
// variable is undefined
}
你也可以使用三元条件运算符:
Var a = "hallo world"; Var a = !a ?文档。写(“我不知道‘a’”):文档。写("a = " + a);
//var a = "hallo world"; Var a = !a ?文档。写(“我不知道‘a’”):文档。写("a = " + a);
另一个潜在的“解决方案”是使用window对象。它避免了在浏览器中出现引用错误问题。
if (window.x) {
alert('x exists and is truthy');
} else {
alert('x does not exist, or exists and is falsy');
}
从技术上讲,正确的解决方案是(我认为):
typeof x === "undefined"
你有时会偷懒,使用
x == null
但是这允许一个未定义的变量x和一个包含null的变量x返回true。