javascript - 如何检测未声明的变量与已声明但未初始化的变量

标签 javascript

此 JavaScript 中有两个变量(从技术上讲,只有 a 是变量,b 不存在):

function func() {
    var a;// a is declared but uninitialised
    //var b; //b is commented out so b does not exist
}

如何区分ab

两者都是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/

相关文章:

javascript - 使用 ng-repeat 指令循环

javascript - 我如何修改jquery短信计数器

javascript - 如何在浏览器中显示excel图表?

javascript - 我找不到这个语法错误

Javascript:将参数传递给对象和函数......?

javascript - 网页中的计时器与 phantomjs 中的时间同步

javascript - 当标签没有名称时,如何检索标签的内容?

javascript - 返回最大的数组

JavaScript 对象和方法,但 getName 不是函数

javascript - 同位素 - 隐藏第一次加载中的元素