重新分配变量和重新定义之间的性能差异

Performance difference between reassigning variable and redefining

本文关键字:性能 之间 新分配 分配 变量 新定义 定义      更新时间:2023-09-28

在Javascript中,哪种样式的性能更好?

样式1

var x = ''
for(var i = 0 ; i < arr.length ; i ++){
    x = ....
    //do something with x
 }

样式2

for(var i = 0 ; i < arr.length ; i ++){
    var x = ....
    //do something with x
 }

JavaScript不像其他一些语言那样有块作用域,只有函数作用域。这意味着在实践中,JS引擎将代码的第一个版本解释为:

var i, x = '';    
for(i = 0 ; i < arr.length ; i ++){
    x = ....
    //do something with x
}

第二个版本完全相同,只是没有为x:分配默认的''

var i, x;    
for(i = 0 ; i < arr.length ; i ++){
    x = ....
    //do something with x
}

因此,在我看来,"样式1"是一种糟糕的做法,因为你指定了一个从未使用过的值。但我认为"样式2"更糟糕,因为它暗示了不存在的块范围。

至于哪一个性能更好,如果不测试它,我希望两者在任何现代JS引擎中都差不多。

我总是建议尽可能多地使用局部变量,因为javascript中提供了范围链性能调优。阅读http://blogs.msdn.com/b/jscript/archive/2007/07/26/scope-chain-of-jscript-functions.aspx了解更多信息。