JavaScript 中到底加不加分号?

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

JavaScript 中的分号问题

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

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

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

8535 次点击
所在节点    Node.js
78 条回复
JoStar
2021-05-02 21:43:31 +08:00
不加分号会有必须通过前导分号解决一些歧义,现代的 IDE 与 eslint 可以自动提示你。

所以加不加分号已经从一个利弊问题变成了习惯问题了,纯看自己喜欢。

我的启蒙编程语言是 C++,所以我很多东西会按照 C++的思路写,比如在 JS 里写分号。
liuxing
2021-05-02 21:47:30 +08:00
@shakukansp ts 中还是和 js 一样 爱写不写
Track13
2021-05-02 21:58:01 +08:00
看个人,我不加,但是公司规范里要求加,让格式化工具加就是了。
liuxing
2021-05-02 21:58:26 +08:00
@avastms 哈哈哈 原来还有这功能
falcon05
2021-05-02 22:15:35 +08:00
@weijar 别逗,谁说写 js 必须用 linter ???
xiangyuecn
2021-05-02 22:24:27 +08:00
- 必须加分号 (强迫症不接受模棱两可的用法,存在不加就无法运行那就都加)

- tab 缩进 或 4 个以上空格缩进( 2 个空格缩进的代码简直不是给人看的)

以上无争议,也不接受争议🐶 😂
shakukansp
2021-05-02 22:31:42 +08:00
@liuxing
有的地方加有的地方不加你也能忍么
如果上面一行是个函数调用,下面一行开头是个断言就一定要加分号
如果其他地方都不加分好那就变成了有的地方加有的地方不加,不统一
所以必须加
liuxing
2021-05-02 22:41:07 +08:00
@xiangyuecn 哈哈哈 我不加分号也用 2 个 space
wangcansun
2021-05-02 22:52:31 +08:00
写 java 出身,转到 JavaScript 。习惯性的加分号,毕竟意味着一行代码的结束
craig
2021-05-02 23:22:25 +08:00
不加分号,锁进用两个空格,使用 ESLint + Prettier 确保代码整洁,不出问题。
10bkill1p
2021-05-02 23:32:46 +08:00
这就是我直接用 JavaScript Standard Style 的原因,直接统一了节省时间
HankLu
2021-05-03 00:45:31 +08:00
无所谓
Rocketer
2021-05-03 01:08:53 +08:00
26 楼 @xiangyuecn 和 30 楼 @craig 打一架吧,我看热闹不嫌事大
momocraft
2021-05-03 02:42:03 +08:00
vue 之父說不加
Kylin30
2021-05-03 03:27:58 +08:00
我听说加了分号大括号之类的在重新格式化代码工具中不容易出错。
loading
2021-05-03 07:59:15 +08:00
反正我是会加的,不然还要看下一行才知道究竟结束了没。
js 链式写法使然。
hyrious
2021-05-03 08:15:16 +08:00
想写就写
不写的代价是当行前缀为 [ ( 时需要在前面添加分号
yyx 不写(逃
可以打开 vscode 的 formatOnSave 和 formatOnType,省得思考
------
不过我有一个提议,大部分不引起歧义的时候不写,在下一行是 [ ( 开头时编辑器自动在上一行结尾补 ;
不知道能不能写个简单的 formatter 做到这点
palxie
2021-05-03 08:24:40 +08:00
这个看团队规范, 我们一个内地项目加分号, 一个香港项目不加分号, 都试下还是不加分号的香
cmdOptionKana
2021-05-03 10:13:32 +08:00
@hyrious 用 JavaScript Standard Style 就很好
Kaciras
2021-05-03 10:35:20 +08:00
风格问题,跟 TAB 还是空格缩进,单双引号一样。
GitHub stars 前十的 JS 项目有 8 个都加了。
我建议加,如果做全栈,尽量在不同语言之间保持一致。

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

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

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

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

© 2021 V2EX