2
我想知道在javascript中將字符串轉換爲數字的方法更具性能,因此我去jsperf查看哪些方法可能效果最好。不過,根據Benchmark.prototype.setup()函數中是定義初始變量還是直接在全局範圍內,我似乎得到了不同的結果。爲什麼jsperf會根據HTML和setup中的準備代碼給出不同的結果?
爲什麼這可能發生的任何想法?
我想知道在javascript中將字符串轉換爲數字的方法更具性能,因此我去jsperf查看哪些方法可能效果最好。不過,根據Benchmark.prototype.setup()函數中是定義初始變量還是直接在全局範圍內,我似乎得到了不同的結果。爲什麼jsperf會根據HTML和setup中的準備代碼給出不同的結果?
爲什麼這可能發生的任何想法?
發生這種情況是因爲範圍查找帶來的性能損失很小。
例如:
var foo = 42; // outer scope
(function() { // inner scope
doSomething(foo); // needs to look up `foo` and fetch it from the outer scope
}());
即使你忽略IIFE那裏的開銷,這仍是絕對慢於:
var foo = 42;
doSomething(foo); // no scope lookups needed
不同的範圍可以使不同的解釋優化。 – jfriend00