重新分配变量和重新定义之间的性能差异
Performance difference between reassigning variable and redefining
在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了解更多信息。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 函数声明与函数表达式之间的性能差异
- 行之间有空格会影响 JavaScript 代码的性能吗?
- 可见性:隐藏和显示:无之间的性能差异
- jQuery/CSS在幻灯片之间的转换扰乱了位置:修复了幻灯片内部的性能
- 重新分配变量和重新定义之间的性能差异
- 使用:nth-child()选择器和.get()方法之间的性能差异
- 对字符串对象调用 .localeCompare 与构造特制的 Intl.Collator 对象之间的性能差异
- 函数和对象之间的差异,以及它如何影响性能
- C# 和 Javascript 之间的性能和内存差异
- “==”和“===”之间是否存在显著的性能差异
- Javascript/jQuery-height()和.css({'height'})之间是否存在性能差
- JavaScript中多维数组或对象数组之间的性能
- Javascript和PHP之间赋值的性能
- 属性与类之间是否存在性能(或其他方面)差异
- 后端处理与phantomjs/nodejs之间的性能差异
- 内联Javascript代码和纯Javascript代码之间的最佳性能是什么?
- 为什么复杂循环和多循环之间会有如此巨大的性能差异?
- 如何补偿浏览器之间的循环性能差异
- 这两种for循环使用方法之间是否有显著的性能差异?