JS 不写分号会出 BUG 的。。。

2018-09-19 11:13:03 +08:00
 fundebug
console.log("Hello, World!")
[1,2,3].map(i=>console.log(i))

报错"cannot read property '3' of undefined"

那大家还写不写分号呢? https://blog.fundebug.com/2018/09/18/js-semicolon-bug/

14075 次点击
所在节点    JavaScript
97 条回复
marcong95
2018-09-20 10:35:29 +08:00
上个 Linter 有这么痛苦么,为毛这种东西还值得撕。。。
Yuicon
2018-09-20 10:41:14 +08:00
我 js 和 java 写分号,py 和 go 不写 都是入乡随俗 好像只有 js 有这个争论
wmhx
2018-09-20 10:44:34 +08:00
加分号,肯定不会出现莫名其妙的问题, 不加就不好说了; 如果你是看前人的代码, 你能接受那一种?
fundebug
2018-09-20 11:12:32 +08:00
@marcong95 我也觉得这个没啥好争的...用个工具自动加分号不出 BUG 就好了...
semiwhale
2018-09-20 11:39:06 +08:00
@Yuicon 因为 js 一些情况下不写分号会有 bug,所有才有这个争论。
lincanbin
2018-09-20 11:57:19 +08:00
不想写分号,也得记得用 Lint。
Fury718
2018-09-20 12:21:00 +08:00
@vevlins console.log("Hello, World!") 返回的值是 undefined 结合下一条语句是 undefined[1,2,3] 在这里报错了
vsomeone
2018-09-20 12:33:28 +08:00
我个人感觉还是加分号的比较好。标准更新要保持兼容性,肯定是首先保证不影响写了分号的代码。如果未来新标准又加入了一个新的运算符号(虽然可能性很小),未加分号的代码很有可能就会产生歧义。至于说编程减负的,其实分号写习惯了根本就不是多大的负担。就如同 Ctrl + S 这个快捷键按着按着就成习惯,自己是不会感到刻意的(说完我就按了一下…)。
ShareDuck
2018-09-20 12:44:43 +08:00
加!习惯了。不加觉得丑。
adjusted
2018-09-20 13:01:35 +08:00
我以为有了 prettier 就没有人争论这个了,我还是错了。。。
SilentDepth
2018-09-20 13:54:03 +08:00
基本上:

` - + / ( [

这几个字符出现在行首时,前面补分号即可
blackywkl
2018-09-21 08:32:26 +08:00
分号就像断句啊。。。。
fundebug
2018-09-21 11:03:21 +08:00
@ShareDuck 丑不丑这个不好说。。。有人觉得加分号丑。。。
ShareDuck
2018-09-21 12:51:13 +08:00
@fundebug #93 是啊,这是个很主观的意见。
fundebug
2018-09-26 09:53:30 +08:00
@SilentDepth 这样太麻烦了吧....很可能忘掉
SilentDepth
2018-09-26 09:56:24 +08:00
@fundebug #95 看起来是麻烦,但实际上这些情况能遇到的并不多,习惯即可。另外,现代 IDE (比如 WebStorm )可以自动识别这类情况并给出潜在错误提示
fundebug
2018-09-26 09:58:06 +08:00
@SilentDepth 那也行,只要没 BUG 就好

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

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

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

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

© 2021 V2EX