我想在我的代码中看到过去的某个人是否已经声明了a
变量。
我想到了这个:
alert(typeof(a)=="undefined") //true
然后我测试了:
var a;
alert(typeof(a)=="undefined") //also true !
那我如何检查过去某处是否有var a
?
答案 0 :(得分:4)
检查变量是否(本地)声明的唯一方法是测试该值,并查看是否抛出任何ReferenceError
。
try {
a === 1; // Some statement to trigger a look-up for the a variable
alert("a is declared!");
} catch (e) {
alert("a is not declared!");
}
答案 1 :(得分:2)
AFAIK,你不能用局部变量做到这一点。全局变量,您可以使用'a' in window
进行测试。
console.log('a' in window);
// false
a = undefined;
console.log('a' in window);
// true
然而,为什么要这样做?它看起来像是一个非常脆弱的方式来构建你的程序。
编辑:我骗了。这可能有效:
try {
a
console.log("a is declared");
} catch (x) {
if (x instanceof ReferenceError) {
console.log("a isn't declared");
} else {
// i have no idea why else this could throw an exception...
}
}
哦,还有一件事:最好不要在真实应用程序中成为console.log
,或者确保将其填入,因为某些浏览器没有定义console
(例如没有Firebug的Firefox) )。那也是ReferenceError
,顺便说一句......
答案 2 :(得分:0)
使用null启动它,例如:
var a = null;
并检查一下。