JavaScript 中到底加不加分号?

2021-05-02 18:47:32 +08:00
 liuxing

JavaScript 中的分号问题

本文讨论了 JavaScript 中的分号自动插入机制以及哪些情况下必须要加分号。

原文链接: https://www.liuxing.io/blog/semicolons-in-javascript/

那么究竟是写分号多还是不写分号的多?

8514 次点击
所在节点    Node.js
78 条回复
Leviathann
2021-05-02 18:54:42 +08:00
公司 eslint 都加了必写分号规则,因为几乎没有专职前端,都是招 Java 进来要你写全栈。。
cmdOptionKana
2021-05-02 19:00:47 +08:00
不要纠结这个
liuxing
2021-05-02 19:02:10 +08:00
@Leviathann 哈哈哈 全干大佬,感谢回复,团队规范才是第一。
OHyn
2021-05-02 19:06:51 +08:00
顺手加上吧
musi
2021-05-02 19:11:18 +08:00
这不就和你缩进用 tab 还是空格一样的么
规范规定怎么来就怎么来,反正现在的前端基本都要编译。
falcon05
2021-05-02 19:26:56 +08:00
- 在大多数情况下,换行意味着一个分号。但是“大多数情况”并不意味着“总是”!

- 存在 JavaScript 无法确定是否真的需要自动插入分号的情况。这种情况下发生的错误是很难被找到和解决的。

- 大部分时候可以省略分号,但是最好不要省略分号,尤其对新手来说。

https://zh.javascript.info/structure
weijar
2021-05-02 19:41:28 +08:00
@falcon05 这个说法早就 out 了,现在写 JS 都必用 linter,没有你说的问题。反正加分号影响视觉。
suzic
2021-05-02 19:43:03 +08:00
无论加不加,有统一的规范最重要,不要这个模块加那个模块不加
evilStart
2021-05-02 19:43:37 +08:00
不用去纠结这种问题,更不要去浪费时间参与辩论,这都是公说公有理婆说婆有理的东西。
但如果是团队项目的话一定要制定好规范统一, 并且用 linter 强制检查。
不加分号的一些问题也可以用 linter 检查,这些情况可以要求在开头加分号。
IITII
2021-05-02 20:11:25 +08:00
想写就写(但做好统一,别一行写一行不写。。。
个人偏向于不写 semi
还有这个可以用代码格式话工具自动做(写完格式化一下就好
Mutoo
2021-05-02 20:11:50 +08:00
自己随手写,看心情加或不加。具体由项目的配置决定,然后交给 prettier 去自动格式化补上或移除分号。
nexo
2021-05-02 20:17:42 +08:00
但凡你搜一下下就会发现 v 站讨论过 没必要再问一遍
AmiKara
2021-05-02 20:25:49 +08:00
没记错的话红宝书里好像提到过,加了分号对浏览器解析 JS 更好,但是目前不管你 format 或者 babel 转义后基本都是默认加分号的,所以写的时候不用太纠结
iOCZ
2021-05-02 21:04:58 +08:00
不加怎么压缩,压缩肯定要补上。
namelosw
2021-05-02 21:08:13 +08:00
团队里就看团队的风格

我自己写的时候不加,很啰嗦,debug 上下调整 promise chain 之类的时候编辑起来很碍事。

我方式是全不加,仅当写 IIFE 的时候在行首加一个分号,因为现代情况下除了这种情况之前基本不太可能会导致什么问题。
EPr2hh6LADQWqRVH
2021-05-02 21:08:14 +08:00
分号不是给编译器加的,是给人加的,降低心智负担。
一个分号就提醒大脑思维告一段落
bojackhorseman
2021-05-02 21:25:03 +08:00
用了 prettier 统一格式化,不加分号。但我还是喜欢加分号,有点像做数学题先写个解。
libook
2021-05-02 21:32:35 +08:00
https://tc39.es/ecma262/

官方标准,看 12.9 章节。

个人倾向于不省略分号,除非有 standardjs 的 linter 保障不出问题,但为了养成好习惯以便于在任何环境都能写出可靠的代码,我也不用 standardjs 。
liuxing
2021-05-02 21:33:20 +08:00
@suzic hhh 对
shakukansp
2021-05-02 21:36:45 +08:00
用 ts 你就必须加

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/774657

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX