2014-05-06 53 views
2

我想知道在javascript中將字符串轉換爲數字的方法更具性能,因此我去jsperf查看哪些方法可能效果最好。不過,根據Benchmark.prototype.setup()函數中是定義初始變量還是直接在全局範圍內,我似乎得到了不同的結果。爲什麼jsperf會根據HTML和setup中的準備代碼給出不同的結果?

In the global scope

In Benchmark.prototype.setup

爲什麼這可能發生的任何想法?

+0

不同的範圍可以使不同的解釋優化。 – jfriend00

回答

0

發生這種情況是因爲範圍查找帶來的性能損失很小。

例如:

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 
相關問題