我应该在 JavaScript 中使用分号吗?

IT技术 javascript
2021-02-24 11:42:08

我只编写了少量嵌入在 Java 应用程序中运行的 JavaScript,但它使用QUnit进行了测试,已经混合了,我还没有注意到任何问题。

在 JavaScript 中是否使用分号是否有一些传统智慧?

6个回答

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

由于您忽略了分号并且它丢失了之前在压缩/生成/评估解析中保存它的空格,因此以后很容易中断。

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

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

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

所以总是使用它们!

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

在我看来,如果代码的结构很明显,那么分号的位置就很清楚了,这样你就习惯了(即在每一行的末尾)甚至不必考虑它;另一方面,如果您不能立即清楚分号的去向,那么很可能无论如何结构都不是最明显的,并且在那里比在其他地方需要显式分号

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

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

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