【问题标题】:Should I use semicolons in JavaScript? [duplicate]我应该在 JavaScript 中使用分号吗? [复制]
【发布时间】:2010-10-06 23:05:31
【问题描述】:

我只编写了少量运行在 Java 应用程序中的 JavaScript,但它使用 QUnit 进行了测试,混合在一起,我还没有发现任何问题。

在 JavaScript 中是否使用分号是否有一些传统观念?

【问题讨论】:

  • 我收集了一个使用分号here 很重要的案例列表。可以在here 中找到省略分号的一些论据。有一个名为standardjs 的代码样式包,它删除了分号。

标签: javascript


【解决方案1】:

使用它们。经常使用它们。

因为您忽略了分号并且它丢失了之前在压缩/生成/评估解析中保存它的空格,所以稍后出现中断太容易了。

【讨论】:

  • 嗯? function foo(){}foo() 工作正常。仅在函数表达式之后需要分号,而不是像您的示例中那样的函数声明。
  • 你说得有道理。该示例 可以 工作,因为现代 javascript 引擎非常 very 很好,并且在它们 应该 存在的地方插入虚拟分号,但该示例应该按规范失败,并且会在旧浏览器中这样做,这无疑是一个不断减少的问题,但您还必须记住,有一天我们可能会经历 XHTML 式的向标准迈进,而您还在编写
  • 该示例 not 按照规范应该会失败(参见 ECMA-262, 3rd Ed. Ch.13)它可以在旧版浏览器中工作(在 IE5.5 上测试) ,一个 1999 年的浏览器),它与 自动分号插入(ECMA-262 Sec. 7.9)无关,这仅发生在 empty 语句变量语句表达式语句do-while语句continue语句break语句、return 语句,throw 语句函数声明上不插入分号(使用function 语句)。跨度>
  • 为了后代:ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf 这个答案完全是错误的。
  • 仅供参考,您从stackoverflow.com/questions/1834642/… 链接到我只想说没有敌意。即使阅读我的cmets,我也看不到它。考虑到您很少对任何人投反对票,也许在您看来,投反对票是一种敌对行为?对我来说,这只是让发帖人比其他人更谨慎地看待他们的答案的一种方式,当然是为了让答案更好。
【解决方案2】:

我会说一直使用它们;您将遇到的大多数代码都使用它们,而一致性是您的朋友。

【讨论】:

    【解决方案3】:

    ECMAscript standard 需要它们,请参阅第 7.9 节 - 只是标准定义了一些规则,允许在解析脚本时自动插入它们。

    所以总是使用它们!

    【讨论】:

      【解决方案4】:

      在编写 JavaScript 时,我总是提倡使用分号。通常,口译员能够为您推断出它们;但我还没有看到一个原因(除了懒惰;-))为什么你会故意以一种不太精确的方式编写你的代码。

      在我看来,如果代码的结构是显而易见的,那么分号的去向就会非常清楚,这样你甚至在养成习惯后都不必考虑它(即在每个末尾线);另一方面,如果您不能立即清楚分号的去向,那么结构很可能不是最明显的,并且那里需要明确的分号更多

      它还使您养成在头脑中理解和界定语句的习惯,因此您(不可否认地)更好地理解您的代码如何解析为 AST 或类似的。这在调试语法错误时一定是件好事。

      【讨论】:

        【解决方案5】:

        使用它们。有几个原因,最明显的是

        1. JavaScript 压缩器/压缩器
        2. 新行是新表达式的规则的例外情况(例如,用变量终止一行并用括号开始下一行,)。)

        【讨论】:

          【解决方案6】:

          如果您不使用它们,然后 minify 您的代码,您可能会遇到所有代码都在一行中的问题,并且浏览器无法完全掌握哪个命令在哪里结束。

          【讨论】:

          • 并非如此。任何现代的标准压缩器都通过使用词法分析器/解析器并保持程序的抽象语法树完好无损。如果缩小器删除了换行标记,它将在同一行上用语法等效的分号标记替换它。 (我的第一个陈述有些错误 - 缩小器也减少了抽象语法树,但仍然保持逻辑等效)。查看这个缩小演示:esprima.org/demo/minify.html。也很容易了解您确实需要 JS 分号的情况:inimino.org/~inimino/blog/javascript_semicolons
          【解决方案7】:

          分号会在我的编辑器中触发自动缩进。我有足够的理由一直使用它。

          是的,一致性也是如此。

          【讨论】:

            【解决方案8】:

            分号的基本思想是告诉浏览器你刚刚完成了一个命令。你应该使用它们。

            【讨论】:

              猜你喜欢
              • 2013-07-12
              • 2015-06-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-10-10
              相关资源
              最近更新 更多