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/

13776 次点击
所在节点    JavaScript
97 条回复
Desperado2018
2018-09-19 12:04:42 +08:00
如果下一行是以[]或者()开头,那么上一行结尾或者下一行开头需要写;
其他情况皆可不写。
phpcxy
2018-09-19 12:05:06 +08:00
作为一个 PHP 程序员,写 JS 的时候都写分号是很合理的~
tanranran
2018-09-19 12:05:36 +08:00
@miyalee #20 #20 啥插件
pabupa
2018-09-19 12:06:46 +08:00
语法就不是法了?
bertonzh
2018-09-19 12:13:46 +08:00
即使你写分号,你能保证你的代码每个结尾都不会漏掉分号吗?个人感觉这比都不加分号要难很多。
如果保证不了,还是需要 eslint。但是既然都用 eslint 了,这个 ‘ BUG ’ 还算问题么?
kernel
2018-09-19 12:14:01 +08:00
楼主在不了解不写分号需要在(和[前加;的基本规则下直接开喷也是醉了
另外现在都上 lint,没有出 BUG 这种事
CodeMan27
2018-09-19 12:20:46 +08:00
if( console.log("hello-world") ) {}
没分号。
bumz
2018-09-19 12:22:43 +08:00
<blockquote>尤雨溪 到处喷 js 结尾写分号的人</blockquote>

所以应该开头写分号?[滑稽]
lzvezr
2018-09-19 12:24:41 +08:00
typescript 不加分号,编译自动加
snw
2018-09-19 12:25:44 +08:00
我记得建议是行开头是这类括号的话,在前面加分号
hronro
2018-09-19 12:29:04 +08:00
看看 standard js 中对分号使用的定义吧:
https://standardjs.com/rules.html#semicolons
imn1
2018-09-19 12:34:35 +08:00
很久以前,上世纪,上线就出错,查了半天本地没问题啊,看网上源码,发现换行符变了……
后来代码行尾检查也成为日常
当然那时没有什么 lint 工具
coolcoffee
2018-09-19 12:36:46 +08:00
prettier 了解一下, 你代码不写分号可以,但是可以做 pre-commit 自动触发格式化。
tinytin
2018-09-19 13:36:49 +08:00
不写,除非必须得写的地方,由 tslint 控制
kingwl
2018-09-19 13:38:43 +08:00
@Desperado2018

function foo() { }

foo
`bar`
Pastsong
2018-09-19 13:41:20 +08:00
无法忍受代码开头里出现
;( 或者 ;[

所以我选择写分号
bufpay
2018-09-19 13:42:10 +08:00
还是写一些,不然压缩后可能会出问题
pkoukk
2018-09-19 13:44:51 +08:00
@bertonzh 你别说,还真能保证。就跟写几行之后无意识的 ctrl+s 一样,这是条件反射
UIXX
2018-09-19 13:59:04 +08:00
1、团队代码,风格一致优先,入乡随俗
2、个人代码,加不加都行

风格问题有什么好讨论的
kernel
2018-09-19 13:59:30 +08:00
@bufpay 神他妈压缩有问题,你见过哪个智障压缩器会出这种问题

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

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

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

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

© 2021 V2EX