在 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];
}
最佳答案
在 JavaScript 或 ActionScript 中,在含义或性能上绝对没有区别。
var
是解析器的指令,不是在运行时执行的命令。如果某个特定标识符已在函数体 (*) 的任何位置声明一次或多次 var
,则 block 中对该标识符的所有使用都将引用局部变量。 value
在循环内、循环外或两者都被声明为 var
没有区别。
因此,您应该编写您认为最易读的内容。我不同意 Crockford 认为将所有变量放在函数顶部总是最好的做法。对于在一段代码中临时使用变量的情况,最好在该段中声明var
,这样该段是独立的,可以复制粘贴。否则,在重构期间将几行代码复制粘贴到一个新函数中,而不单独挑选并移动关联的 var
,您就会得到一个意外的全局变量。
特别是:
for (var i; i<100; i++)
do something;
for (var i; i<100; i++)
do something else;
Crockford 会建议您删除第二个 var
(或删除两个 var
并执行上面的 var i;
),jslint 会提示为此。但在我看来,保留两个 var
更易于维护,将所有相关代码放在一起,而不是在函数顶部有一个额外的、容易忘记的代码。
就我个人而言,我倾向于将在独立代码段中对变量的第一次赋值声明为 var
,无论是否在同一函数的其他部分中对同一变量名进行了另一次单独使用.对我来说,必须声明 var
是一个不受欢迎的 JS 缺点(最好让变量默认为本地);我不认为我有责任在 JavaScript 中复制 [ANSI C 的旧版本] 的限制。
(*:嵌套函数体除外)
关于JavaScript 变量声明外循环还是内循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37187123/