我想检查变量是否有定义。例如,下面的代码会抛出一个未定义的错误
alert( x );
我如何捕捉这个错误?
我想检查变量是否有定义。例如,下面的代码会抛出一个未定义的错误
alert( x );
我如何捕捉这个错误?
当前回答
一个更简单、更简洁的版本是:
if (!x) {
//Undefined
}
OR
if (typeof x !== "undefined") {
//Do something since x is defined.
}
其他回答
你也可以使用三元条件运算符:
Var a = "hallo world"; Var a = !a ?文档。写(“我不知道‘a’”):文档。写("a = " + a);
//var a = "hallo world"; Var a = !a ?文档。写(“我不知道‘a’”):文档。写("a = " + a);
公认的答案是正确的。只是想多一个选择。你也可以用try…Catch块来处理这种情况。举个奇怪的例子:
var a;
try {
a = b + 1; // throws ReferenceError if b is not defined
}
catch (e) {
a = 1; // apply some default behavior in case of error
}
finally {
a = a || 0; // normalize the result in any case
}
注意catch块,它有点混乱,因为它创建了块级作用域。当然,为了回答问题,这个例子非常简单,它不包括错误处理的最佳实践;)
就像下面这样做:
function isNotDefined(value) {
return typeof value === "undefined";
}
叫它:
isNotDefined(undefined); //return true
isNotDefined('Alireza'); //return false
这个错误告诉你x根本不存在!它没有被声明,这与被赋值是不同的。
var x; // declaration
x = 2; // assignment
如果你声明了x,就不会出现错误。你会得到一个警告,说未定义,因为x存在/已经声明,但还没有被赋值。
要检查变量是否已声明,您可以使用typeof,任何其他检查变量是否存在的方法都会引发与初始时相同的错误。
if(typeof x !== "undefined") {
alert(x);
}
这是检查存储在x中的值的类型。只有当x尚未声明或已声明且尚未赋值时,它才会返回undefined。
void操作符对于传递给它的任何参数/表达式都返回undefined。因此,您可以根据结果进行测试(实际上,一些微型程序将代码从undefined更改为void 0以节省几个字符)
例如:
void 0
// undefined
if (variable === void 0) {
// variable is undefined
}