Javascript 开关与 if...else if...else

标签 javascript cross-browser conditional

伙计们,我有几个问题:

  1. 在 JavaScript 中,switch 语句和 if...else 之间是否存在性能差异?
  2. 如果是,为什么?
  3. switchif...else 的行为在浏览器之间是否不同? (FireFox、IE、Chrome、Opera、Safari)

问这个问题的原因似乎是我在 Firefox 中使用大约 1000 种情况下的 switch 语句获得了更好的性能。


已编辑 不幸的是,这不是我的代码,Javascript 是从已编译的库在服务器端生成的,我无权访问该代码。生成 javascript 的方法称为

CreateConditionals(string name, string arrayofvalues, string arrayofActions)

注意 arrayofvalues 是一个逗号分隔的列表。

它产生的是

function [name] (value) {
  if (value == [value from array index x]) {
     [action from array index x]
  }
}

注意:其中 [name] = 传入服务器端函数的名称

现在我更改了要插入到 TextArea 中的函数的输出,编写了一些 JavaScript 代码来解析函数,并将其转换为一组 case 语句。

最后我运行了该函数,它运行良好,但在 IE 和 Firefox 中的性能不同。

最佳答案

一般性回答:

  1. 是的,通常。
  2. See More Info Here
  3. 是的,因为每个都有不同的 JS 处理引擎,但是,在下面的站点上运行测试时,switch 在大量迭代中总是执行 if、elseif。

Test site

关于Javascript 开关与 if...else if...else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2922948/

相关文章:

MySQL选择行直到达到固定数量的条件

javascript - 为什么 JavaScript 在条件语句中同时允许 &&(逻辑)和 &(按位)?

ant - 如何使用 "if-else"模拟 "condition"逻辑?

javascript - 如何确定所有变量是否为真或全部为假?

css - 移动 Web 表单 - 可以使用 CSS 和 HTML 为 Android 和 iPhone 自定义单选按钮样式吗?

css - Firefox 下的渲染问题

html - 提高 flex 布局的IE兼容性

javascript - Chrome 和 Firefox 会刷新除一个之外的所有 js 文件

javascript - 扁平的 promise 链系列,每个 promise 调用都取决于先前调用的解决方案

javascript - Angular 传输状态不会阻止重复的 http 调用