我创建了这个测试http://jsperf.com/loop-counter为什么这三个表达式之间存在这样的差异。
答案 0 :(得分:9)
因为你的测试是错误的。你重复使用相同的变量,所以它越大,增量就越慢。看看这个:http://jsperf.com/loop-counter/6
这就是jsperf的工作原理 - 在所有测试之前,准备代码只运行一次。
答案 1 :(得分:2)
我尝试多次运行所有三个测试,每次重新加载页面时,我尝试的第一个测试是迄今为止最快的。
所以我猜测测试太短暂存在问题,即运行测试的代码占用大部分时间。
答案 2 :(得分:2)
如果这不是一个修辞问题,那么你真的想要一个aswer:那么人们如何在浏览器中编写JS引擎。
答案 3 :(得分:2)
这是因为该计划在幕后做了什么:
l_count + = 1; 这会将数字1添加到变量中。
l_count = l_count + 1; 这会调用变量l_count,读取它,将结果加1,并将其传递回l_count。
l_count ++; 在运行该行后,它会向变量添加1。因此,当行完成时,该值存储在另一个临时变量中,然后返回值,添加1并保存回原始值。