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/