slo*_*ife 63 javascript refactoring jslint
JSLint(打开onevar标志)正在标记我的一些javascript代码,其中包含以下内容:
Problem at line 5 character 15: Too many var statements.
我很乐意解决这些错误,但我想知道,我是为了性能而做,还是因为这只是一种不好的做法,并且更有可能在我的javascript代码中引入错误.onevar旗帜背后的原因是什么?
我确实查看了var关键字的JSLint文档,但没有具体说明为什么同一函数中的多个var语句都不好.
这是一个例子的尝试.解释代码如何只从1个var语句中受益:
function Test(arg) {
var x = arg + 1,
y = cache.GetItem('xyz');
if (y !== null) {
// This is what would cause the warning in JSLint
var request = ajaxPost(/* Parameters here */);
}
}
Run Code Online (Sandbox Code Playgroud)
swa*_*ohn 98
Javascript没有块范围.在其他语言中(如c),如果在if语句中声明一个变量,则不能在它之外访问它,但在javascript中你可以.JSLint的作者认为这是一种不好的做法,因为你(或其他读者)可能会感到困惑并认为你不能再访问变量,但实际上你可以.因此,您应该在函数顶部声明所有变量.
Elz*_*ugi 28
官方原因在于道格拉斯·克罗克福德.
报价:
在许多语言中,块引入了范围.块中引入的变量在块外部不可见.
在JavaScript中,块不引入范围.只有功能范围.函数中任何位置引入的变量在函数中的任何位置都可见.JavaScript的块会让有经验的程序员感到困惑并导致错误,因为熟悉的语法会产生错误的承诺.
JSLint期望具有函数的块,if,switch,while,for,do和try语句以及其他任何地方.
在具有块范围的语言中,通常建议在首次使用的站点声明变量.但是因为JavaScript没有块范围,所以在函数顶部声明所有函数的变量是明智的.建议每个函数使用一个var语句.这可以通过vars选项拒绝.
| 归档时间: |
|
| 查看次数: |
14422 次 |
| 最近记录: |