我想检查变量是否有定义。例如,下面的代码会抛出一个未定义的错误
alert( x );
我如何捕捉这个错误?
我想检查变量是否有定义。例如,下面的代码会抛出一个未定义的错误
alert( x );
我如何捕捉这个错误?
当前回答
我经常用最简单的方法:
var variable;
if (variable === undefined){
console.log('Variable is undefined');
} else {
console.log('Variable is defined');
}
编辑:
如果没有初始化变量,将抛出异常"Uncaught ReferenceError: variable is not defined…"
其他回答
你也可以使用三元条件运算符:
Var a = "hallo world"; Var a = !a ?文档。写(“我不知道‘a’”):文档。写("a = " + a);
//var a = "hallo world"; Var a = !a ?文档。写(“我不知道‘a’”):文档。写("a = " + a);
我们可以像下面这样检查undefined
var x;
if (x === undefined) {
alert("x is undefined");
} else {
alert("x is defined");
}
另一个潜在的“解决方案”是使用window对象。它避免了在浏览器中出现引用错误问题。
if (window.x) {
alert('x exists and is truthy');
} else {
alert('x does not exist, or exists and is falsy');
}
对不起,这里的大多数答案都混淆了“未定义”和“未定义”。
Undefined -一个变量声明了,但它的值是未定义的。 没有定义-变量甚至没有声明。
检查这两种情况的唯一安全方法是使用typeof myVar === 'undefined'
myVar === undefined将只检查case number(1)。如果myVar甚至没有声明,它仍然会抛出“myVar is not defined”for case number(2)。OP特别询问了“甚至没有定义”的情况(2)。
附注:我确实理解“情况2”在现代ES6世界中变得越来越少,但一些旧的遗留组件仍然存在于过去。
一个更简单、更简洁的版本是:
if (!x) {
//Undefined
}
OR
if (typeof x !== "undefined") {
//Do something since x is defined.
}