这段代码:
- var i = 10000000000;
- do {
- i--;
- }
- while (i !== 0);
- //Result: 38 second.
- var i = 10000000000;
- do {}
- while (i-- !== 0);
- //Result: 27 second.
- //(same result with while (i--)
- var i = 10000000000;
- do {}
- while (i-- | 0);
- //Result: 13.5 second.
问题是:为什么这些版本会同时获得较小的i值?如果我从i中减去一个零;所有版本都需要2.2秒. (甚至在JIT优化后测试 – 仅在V8中测试)
似乎合乎逻辑的是,第三个版本应该总是更快,但只有非常高的值才会更快.
这只是一种好奇心……实际上并不重要.