省略分号会影响JavaScript的性能吗?

时间:2013-01-17 13:14:26

标签: javascript

我正在与一位同事讨论JavaScript,同时查看一些代码片段。我们注意到这些片段在语句结尾处缺少;。我们都知道即使行末尾没有显示分号也能正确解释JS,但我想知道这是否会影响评估的性能,因为它是一种解释型语言。

4 个答案:

答案 0 :(得分:23)

包含空格,分号和注释的javascript文件更重。这是主要影响。

但是你是一名程序员而且你必须维护代码,因此这种非常轻微的影响远不如可读性上的不利影响那么重要。省略分号意味着你知道何时你可以省略它们。但规则并不那么简单,学习它们不值得你花时间。

将分号留在原地,你会避免虫子。

如果您想拥有最轻的代码,请使用 minifier 为浏览器构建更简洁的代码。这是它的职责,而不是你的职责。

答案 1 :(得分:9)

在JS中省略分号是一个很大的争论,但我们应该始终保持分号。如果你谈论性能,那么在保留分号的同时几乎没有什么好处。

但事情并非仅限于此。除了表演之外,还有一件大事需要注意。

Doug Crockford在presentation中非常清楚地解释了分号的需要:

  

JS解释器发现错误,添加分号并运行   整件事。但不是每次他都把分号放在上面   正确的地方和搞笑的错误是后果。你应该永远   使用分号并通过JSLint等测试工具运行js。

除了这个分号之外,还为代码提供了更多结构并使其更清晰 - 此外,它们的存在允许一些开发人员对其代码进行模糊处理。

希望它会对你有所帮助。

答案 2 :(得分:2)

参考提供的测试: 这实际上并没有说明ASI与非ASI的性能差异。将受到影响的性能可能是标记化。解释器或JIT不会为每次迭代执行此操作,而只会执行一次。只有在加载大型代码库时才会注意到这种效果。分号允许JIT或解释器更快地识别语句结束,而不是从下一个标记推断它。

答案 3 :(得分:1)

代码语法的微小差异通常对代码的性能影响很小。解释一串代码的过程非常有效,并且只花费了实际运行代码所花费的时间的一小部分。

效率低下的算法或额外的网络调用,例如拉入多个.js文件而不是单个文件,会产生更大的影响。