我试图查看在 javascript 中将字符串转换为数字的哪些方法性能更高,所以我去 jsperf 看看哪种方法效果最好。但是,根据初始变量是在 Benchmark.prototype.setup() 函数中定义还是直接在全局范围内定义,我似乎得到了不同的结果。
关于为什么会发生这种情况的任何想法?
我试图查看在 javascript 中将字符串转换为数字的哪些方法性能更高,所以我去 jsperf 看看哪种方法效果最好。但是,根据初始变量是在 Benchmark.prototype.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