我想检查变量是否有定义。例如,下面的代码会抛出一个未定义的错误
alert( x );
我如何捕捉这个错误?
我想检查变量是否有定义。例如,下面的代码会抛出一个未定义的错误
alert( x );
我如何捕捉这个错误?
当前回答
你也可以使用三元条件运算符:
Var a = "hallo world"; Var a = !a ?文档。写(“我不知道‘a’”):文档。写("a = " + a);
//var a = "hallo world"; Var a = !a ?文档。写(“我不知道‘a’”):文档。写("a = " + a);
其他回答
在JavaScript中,null是一个对象。对于不存在的东西,还有另一个值,未定义。DOM在几乎所有无法在文档中找到某些结构的情况下都会返回null,但在JavaScript中使用的值是undefined。
第二,不,没有直接的等价物。如果你真的想检查是否为空,请执行:
if (yourvar === null) // Does not execute if yourvar is `undefined`
如果想检查变量是否存在,只能使用try/catch,因为typeof会将未声明的变量和声明值为undefined的变量视为等效。
但是,要检查变量是否已声明且未定义:
if (yourvar !== undefined) // Any scope
以前,必须使用typeof操作符安全地检查未定义,因为可以像变量一样重新赋值未定义。旧的方法是这样的:
if (typeof yourvar !== 'undefined') // Any scope
在2009年发布的ECMAScript 5中修正了undefined可重赋的问题。现在,您可以安全地使用===和!==来测试未定义,而无需使用typeof,因为未定义已经只读了一段时间。
如果你想知道一个成员是否独立存在,但不关心它的值是什么:
if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance
如果你想知道一个变量是否为真:
if (yourvar)
源
这个错误告诉你x根本不存在!它没有被声明,这与被赋值是不同的。
var x; // declaration
x = 2; // assignment
如果你声明了x,就不会出现错误。你会得到一个警告,说未定义,因为x存在/已经声明,但还没有被赋值。
要检查变量是否已声明,您可以使用typeof,任何其他检查变量是否存在的方法都会引发与初始时相同的错误。
if(typeof x !== "undefined") {
alert(x);
}
这是检查存储在x中的值的类型。只有当x尚未声明或已声明且尚未赋值时,它才会返回undefined。
我经常用最简单的方法:
var variable;
if (variable === undefined){
console.log('Variable is undefined');
} else {
console.log('Variable is defined');
}
编辑:
如果没有初始化变量,将抛出异常"Uncaught ReferenceError: variable is not defined…"
真正测试变量是否未定义的唯一方法是执行以下操作。记住,undefined是JavaScript中的一个对象。
if (typeof someVar === 'undefined') {
// Your variable is undefined
}
这个线程中的其他一些解决方案会让你相信一个变量是未定义的,即使它已经定义了(例如,值为NULL或0)。
就像下面这样做:
function isNotDefined(value) {
return typeof value === "undefined";
}
叫它:
isNotDefined(undefined); //return true
isNotDefined('Alireza'); //return false