有 绝对没有区别 意义还是性能,在Javascript或Actionscript。
var是解析器的指令,而 不是
运行时执行的命令。如果
var在函数体(*)中的任何位置一次或多次声明了特定的标识符,则该标识符在块中的所有使用将引用局部变量。
value声明是
var在循环内部,循环外部还是同时声明这两者都没有区别。
因此,您应该写出最容易阅读的内容。我不同意Crockford的观点,将所有var放在函数顶部始终是最好的选择。对于在代码部分中临时使用变量的情况,最好
var在该部分中进行声明,因此该部分可以独立存在并且可以复制粘贴。否则,在重构过程中将几行代码复制粘贴到新函数中,而无需分别挑选并移动关联的
var,这会使您自己成为意外的全局对象。
特别是:
for (var i; i<100; i++) do something;for (var i; i<100; i++) do something else;
Crockford将建议您删除第二个
var(或同时删除
vars和do
vari;),而jslint会为此向您请教。但是IMO将两个都
var保留在一起,将所有相关代码保持在一起,而不是在函数顶部保留一些容易忘记的额外代码,是更可维护的。
我个人倾向于将
var变量声明为代码的独立部分中的第一个赋值,无论是否在同一函数的其他部分中单独使用了同一变量名。对我来说,
var根本不需要声明是JS
wart(最好将变量默认设置为local)。我不认为我也有责任在Javascript中复制ANSI C的旧版本的限制。
(*:除了嵌套函数体中)



