此 JavaScript 中有两个变量(从技术上讲,只有 a
是变量,b
不存在):
function func() {
var a;// a is declared but uninitialised
//var b; //b is commented out so b does not exist
}
如何区分a
和b
?
两者都是typeof === 'undefined'
。
如果a
在全局范围内,你可以尝试'a' in window
来告诉它是已声明但未初始化。但如果它在函数作用域内怎么办?
如何判断 JavaScript 变量是已声明但未初始化还是根本不存在?
最佳答案
你可以使用try
/catch
看看是否抛出异常。不存在的变量将抛出 ReferenceError
,除非使用 typeof
。
工作示例:
function func() {
var a;
//var b;
try {
a;
}
catch (ex) {
console.log('a does not exist');
}
try {
b;
}
catch (ex) {
console.log('b does not exist');
}
}
func();
不过,格式良好的代码不应该真正依赖于这样的东西。
关于javascript - 如何检测未声明的变量与已声明但未初始化的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37626534/