为什么那么多人写 js 不喜欢加分号

2017-06-01 14:24:53 +08:00
 caniuse
23149 次点击
所在节点    程序员
129 条回复
caniuse
2017-06-01 18:15:21 +08:00
反感
caniuse
2017-06-01 18:16:02 +08:00
@chunqiuyiyu 我也是啊,没分号感觉好变扭,到现在也没习惯
caniuse
2017-06-01 18:16:23 +08:00
@wangjie 我写 php go js
wujunze
2017-06-01 18:21:36 +08:00
@Thoxvi #12 对啊 同问 js 压缩的时候不写分号不是容易炸吗?
wangjie
2017-06-01 18:24:18 +08:00
@caniuse #63 我已经习惯了不加分号了。。。
Krime
2017-06-01 18:38:40 +08:00
嗯,就算 JS 不压缩, ( [ / + - 开头的语句还是会和上一行一起执行,导致意外爆炸。
@wujunze 要时刻注意这么多符号还是太累了,除非 JS 的语法标准解决这个歧义问题,不然我还是选择统一加分号,毕竟加分号已经是下意识反应了。
wujunze
2017-06-01 18:41:02 +08:00
@Krime #66 我习惯性的加分号 感觉加分号代码看起来比较清晰
Cbdy
2017-06-01 18:46:16 +08:00
@SoloCompany 其实这是一个很简单的问题:用 es6、7 写的代码,有多少人不经过 babel 直接放到浏览器中跑?
因此,我们可以从两个方面看待 javascript:服务端 js 和客户端 js,客户端 js 需要加分号,服务端不需要
MrJing1992
2017-06-01 18:48:54 +08:00
我就想问问,不加分号的 js 代码,最终由 babel 编译压缩后,加了没。
caniuse
2017-06-01 18:52:20 +08:00
@Cbdy 我们团队风格是前后端都不加分号 react angular antd stylus es6
caniuse
2017-06-01 18:58:43 +08:00
后端 koa
loveminds
2017-06-01 18:59:53 +08:00
不喜欢
Rice
2017-06-01 19:00:34 +08:00
不加才是正道
SuperMild
2017-06-01 19:04:49 +08:00
可见 Golang 吸收了别的语言的经验教训,从一开始就提供了 gofmt 代码格式化工具是多么明智。
caniuse
2017-06-01 19:26:14 +08:00
@SuperMild 我想用 golang 开发个分布式推送系统 能用那些东西呢? 不想用 java 写的 zookeeper、kafka
Cbdy
2017-06-01 19:28:22 +08:00
@caniuse 您说的很有道理,我本身是后端,js 不算很了解,刚刚看完这个帖子专门去学习了一下 js 的 asi ( auto semicolon insertion ),我收回刚刚说的区分前后端 js 的言论,那个说法不合理。

我现在认为更好的做法是从 js 本身出发,了解不加分号会怎样导致问题,asi 的工作机理,然后不加分号。因为我注意到在不了解机理的情况下去加分号只是一种鸵鸟策略,并不能解决所有问题,分享刚刚学习的一篇文章
http://justjavac.com/javascript/2013/04/22/automatic-semicolon-insertion-in-javascript.html
timelessg
2017-06-01 19:33:23 +08:00
我写 swift 也不加
jason19659
2017-06-01 19:34:39 +08:00
;
changwei
2017-06-01 19:34:41 +08:00
节省键盘寿命
dallaslu
2017-06-01 19:38:57 +08:00
这种编程风格、语言规范的冲突问题,都应该由 IDE 解决。

你喜欢加分号,你打开所有的源代码,每行行尾该有分号的地方就都有分号;其他人不喜欢分号,他们看到的源代码就没没有分号。IDE 在查看时自动处理分号的显示与隐藏,保存到硬盘时以相同的策略转换到某一标准编程规范,这样就能与版本工具完美协作。

发布时,同样可以指定一个策略,输出某种风格的压缩代码。

这样,我们就不必要争论花括号要不要另起一行、缩进是制表符还是 4 个空格、if / while 等控制语句后面只有一句话时要不要括号、body 与 head 要不要缩进、br 要不要闭合、多少个字符就要换一行、赋值语句里等号前面要不要有个空格,等等等等没有实际意义的口水战话题。这样,我们至少可以把更多的精力用在「变量命名里用不用下划线」以及「用拼音还是英文起名字」这种稍稍有点高度的问题上(尽管这俩问题也没有太大的意义)。

然而绝大多数 IDE 可能并没有注意到这个需求。单从语法上讲,Kotlin 与 Java 语法迥异,但仍完美协作;各 IDE 应该参考于此,来实现其他语种的方言支持!

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

https://tanronggui.xyz/t/365193

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

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

© 2021 V2EX