Raj*_*jat 27 javascript jslint
function test(){
if(true){
var a = 5;
}
alert(a);
}
test();
Run Code Online (Sandbox Code Playgroud)
当我用JsLint检查时,我在JS代码中不断出现"超出范围"的错误,这对我来说毫无意义.所以我很快就创建了一个例子.这段代码是否存在实际问题,因为变量最终会被提升到函数的顶部.
Que*_*tin 34
虽然var将变量本地化为函数并且需要提升,但大多数语言都具有块范围而不是函数范围.
通过在if块中使用var关键字,但访问该块之外的变量,您已经创建了一个可能让那些不熟悉JS特性的人感到困惑的构造.
Douglas Crockford建议var在函数顶部使用单个语句,该语句指定应该作用于该函数的所有变量.
function test(){
var a;
if(true){
a = 5;
}
alert(a);
}
test();
Run Code Online (Sandbox Code Playgroud)
使用多个变量,您将拥有:
function foo () {
var a, b, c, d = "only d has an initial value", e;
// …
}
Run Code Online (Sandbox Code Playgroud)
您编写的代码正在运行.它不是非常易读/可维护.a在范围内声明变量if可能会给出a只在此范围内可见的错误印象(正如此程序所示,这不是真的 - a将在整个函数中可见).
此JsLint警告鼓励您将声明放在实际使用变量的确切范围内,如下所示:
function test(){
var a;
if(true){
a = 5;
}
alert(a);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19883 次 |
| 最近记录: |