javascript - JsLint 'out of scope'错误

标签 javascript jslint

function test(){
    if(true){
        var a = 5;
    }
    alert(a);
}

test();

当我使用 JsLint 检查时,我的 JS 代码中不断出现“超出范围”的错误,这对我来说毫无意义。所以我很快创建了一个示例。这段代码实际上有什么问题吗?无论如何,变量最终都会被提升到函数的顶部。

最佳答案

虽然 var 将变量本地化到函数并受到提升,但大多数语言具有 block 作用域而不是函数作用域。

通过在 if block 内使用 var 关键字,但访问该 block 外的变量,您创建的构造可能会让不熟悉 JS 特性的人感到困惑。

Douglas Crockford recommends在函数顶部使用单个 var 语句来指定应作用于该函数的所有变量。

function test(){
    var a;
    if(true){
        a = 5;
    }
    alert(a);
}

test();

如果有多个变量,您将拥有:

function foo () {
    var a, b, c, d = "only d has an initial value", e;
    // …
}

关于javascript - JsLint 'out of scope'错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485171/

相关文章:

javascript - JSLint 认可的将数字转换为字符串的方法是什么?

javascript - 将 jQuery 插件绑定(bind)到尚不存在的元素上

javascript - 我还需要 babel 和 NodeJs5 吗?

javascript - 使用正则表达式将 "pt"转换为 "px"

javascript - 立即函数调用语法

javascript - JSLint 期望 '===' 而不是看到 '=='

javascript - 如何使用javascript从sqlite数据库中获取值

javascript - 突出显示 HTML 中的特定单词

javascript - JSLint - 如何修复 ActiveXObject 在定义之前使用的错误

javascript - 为什么 JSLint 在 "Unexpected ' 之后提示 'return' else'?