javascript - 为什么 jsperf 根据 HTML 和设置中的准备代码给出不同的结果?

标签 javascript html parseint parsefloat jsperf

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

In the global scope

In 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

关于javascript - 为什么 jsperf 根据 HTML 和设置中的准备代码给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23505776/

相关文章:

java - 整数.parseInt : 0xff80CBC4 is an invalid int

javascript - 逻辑和 float ,0.75 > 0 = false?

java - X 在 Integer.parseInt(..,X) 中做了什么?

javascript - 带有必填字段的 Onclick 表单?

javascript - 将数字范围转换为 100 的一部分

javascript - 使用谷歌地图坐标连接两个对象数组

html - CSS 'bullet' 使用 em 单位的悬挂缩进

javascript - 如何在 plotly.js 中隐藏/删除 slider 刻度/步骤及其标签?

javascript - 在 JavaScript 中添加 Web 辅助功能支持

javascript - 缩放固定宽度的字体以适应一行中恒定数量的字符