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/

14070 次点击
所在节点    JavaScript
97 条回复
qiaobeier
2018-09-19 14:09:11 +08:00
不写,反正编译器会自己加。 写不写其实无所谓,就怕有写有不写,那就看的难受了
qiaobeier
2018-09-19 14:12:04 +08:00
@Pastsong js 文件或者代码块开头加分号是推荐写法
EPr2hh6LADQWqRVH
2018-09-19 14:20:27 +08:00
@qiaobeier 谁推荐给你的,是不是尤雨溪

能找出一个推荐不写分号的,不是尤雨溪的大佬吗
otakustay
2018-09-19 14:23:44 +08:00
@avastms hax
xfriday
2018-09-19 14:30:03 +08:00
不写原生 js 就行了,各大编译器 ts, babel,自己补齐
SeanChense
2018-09-19 14:31:35 +08:00
JS 不是法外之地
icris
2018-09-19 14:32:22 +08:00
@hronro #31
我一个格式化每一行都加上分号有什么不好,要按它标准来写 `;[1, 2, 3].forEach(bar)` ?那为什么 ESLint semi 默认值 always ?
fundebug
2018-09-19 14:44:36 +08:00
@Vhc001 我写不写分号关他什么事,叫他一边凉快去
kernel
2018-09-19 16:53:41 +08:00
@avastms 现在 JS 大佬很多都推荐不写分号,你去看看 redux 这种最热门的库都没分号


另外有人觉得[前加;丑,你去看看你写的所有代码最前面有[的有几行?为了这几行要给所有行加分号???
mcfog
2018-09-19 16:57:28 +08:00
@xenme 有个语句叫 debugger; 了解一下
mewpoi
2018-09-19 17:20:47 +08:00
加分号真的很丑,已经 3-4 年不写分号了,分号让打包自己去处理,而且验证也 semi: 2, never 了,所以项目里如果发现别人写分号会报错,这个问题就好像为什么 js 以前用都""双引号现在改用''单引号的问题一样,就是因为双引号要按两个键,而单引号只要一个键这么简单,开发本来就已经很繁琐了,就不要给自己代码增加负担,结尾能不用分号就不要用,除非你不会打包,如果纯原生的去写,那么加分号无可厚非
vevlins
2018-09-19 17:29:52 +08:00
所以,这个问题报错的原因是啥
adminii
2018-09-19 17:35:17 +08:00
必须写,不然遇到哪些风骚的代码,像前端那些一旦压缩就 6666 了
EvilCult
2018-09-19 18:03:05 +08:00
外行人有个疑问: 用 lint 后,是不是该提示:map 要 return 了??
icris
2018-09-19 18:24:16 +08:00
@kernel #49
react 有分号,是否说明 Facebook 不是大佬且 react 不够热门?
easylee
2018-09-19 18:33:39 +08:00
写久了 C 和 Java ……不写分号表示难以接受……我连 py 都是加分号的……
xianxiaobo
2018-09-19 18:35:56 +08:00
习惯写上,看着也舒服些。
kernel
2018-09-19 19:27:38 +08:00
@icris 老的库和公司已经有很多现有代码和定下风格标准当然不会再改
xiangyuecn
2018-09-19 19:51:46 +08:00
加分号不加分号都是对的,只要运行过程和最终结果符合预期就是 ok 的,管你是不加分号还是漏了分号。

{我是要求加分号}; 不加分号的代码看起来就像光着屁股,没错,看 java 就像是光着屁股的。

写花里胡哨的格式都可以,反正最终压缩成一坨代码,嘿嘿
kisnows
2018-09-19 21:23:11 +08:00
所有括号前加上分号就好了

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

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

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

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

© 2021 V2EX