小编典典

JavaScript 变量是在循环外声明还是在循环内声明?

all

在 AS3 中,我相信您应该初始化循环外的所有变量以提高性能。JavaScript也是这种情况吗?哪个更好/更快/最佳实践?

var value = 0;

for (var i = 0; i < 100; i++)
{
    value = somearray[i];
}

或者

for (var i = 0 ; i < 100; i++)
{
    var value = somearray[i];
}

阅读 82

收藏
2022-06-11

共1个答案

小编典典

在JavaScript 或 ActionScript 中,意义或性能 绝对没有区别

var是解析器的指令,而 不是
在运行时执行的命令。如果一个特定的标识符var在函数体(*)的任何地方被声明了一次或多次,那么在块中对该标识符的所有使用都将引用局部变量。value声明是var在循环内、循环外还是两者都没有区别。

因此,您应该编写您认为最易读的任何一个。我不同意 Crockford
的观点,即把所有的变量放在函数的顶部总是最好的。对于在一段代码中临时使用变量的情况,最好var在该段中声明,以便该段独立并且可以复制粘贴。否则,在重构期间将几行代码复制粘贴到新函数中,而无需单独选择和移动关联var
.

尤其是:

for (var i; i<100; i++)
    do something;

for (var i; i<100; i++)
    do something else;

Crockford 会建议您删除第二个var(或同时删除vars 和 do var i;above),而 jslint 会为此发牢骚。但是
IMO 保留两个vars 更易于维护,将所有相关代码放在一起,而不是在函数顶部有一个额外的、容易忘记的代码。

就我个人而言,我倾向于var在独立的代码部分中声明为变量的第一次赋值,无论在同一函数的其他部分中是否存在相同变量名的另一种单独用法。对我来说,必须声明var是一个不受欢迎的
JS 疣(最好让变量默认为本地);我不认为我有责任在 JavaScript 中复制 [an old revision of ANSI C] 的限制。

(*:嵌套函数体除外)

2022-06-11