2

我试图查看在 javascript 中将字符串转换为数字的哪些方法性能更高,所以我去 jsperf 看看哪种方法效果最好。但是,根据初始变量是在 Benchmark.prototype.setup() 函数中定义还是直接在全局范围内定义,我似乎得到了不同的结果。

在全球范围内

在 Benchmark.prototype.setup 中

关于为什么会发生这种情况的任何想法?

4

1 回答 1

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
于 2014-05-07T07:51:51.983 回答