TC39 委员会正式写入 ES6 规格:请不要省略分号!

2018-01-12 09:36:02 +08:00
 hubert3
许多 JS 开发者喜欢省略行尾的分号,让引擎自动添加。

现在,TC39 委员会正式写入 ES6 规格:请不要省略分号!一个主要原因是,即将进入规格的 class field 是以分号结尾,省略会有危险。另外,自动添加分号的机制是靠猜的,但软件运行不应该靠猜。
https://github.com/tc39/ecma262/pull/1062/files
https://weibo.com/1400854834/FDYzQvUlL
16724 次点击
所在节点    JavaScript
98 条回复
Martox
2018-01-12 15:03:40 +08:00
我不服
an168bang521
2018-01-12 15:06:57 +08:00
js 代码不加分号,感觉就像拉屎不擦屁股;
2333,这个习惯,我应该是很难改了,看到没有分号的代码,总想给补全;
libook
2018-01-12 15:07:28 +08:00
这个帖子有些标题党。

ES6 是 ECMA-262 6th Edition,如果后续有修改的话不知道是直接给 ES6 打补丁还是在 ES2018 做修订案。
不过这一部分是非规范性的,只是一些建议,最终什么趋势还说不准。

个人喜欢加分号,觉得在 ES 的语言特性方面严格使用分号是一种高可靠性方案;
不过确实此前 ES 的语法情况,末尾分号对语言、引擎和开发程序的设计和实现都没什么实质影响,末尾加不加分号全凭习惯;一些 JS 大牛也认为分号的意义太弱而推崇末尾无分号,综合来看,这确实是合理的。

可能在 ES 的未来发展方面,末尾分号对于语言、引擎的设计和实现造成了影响,未来 ES 对末尾分号的依赖有可能会逐渐增强。以前只需要注意几个特殊情况下特殊处理(如 standardjs 的方案),以保证末尾无分号的风格具备高可靠性;但未来随着新特性的增加,有可能这类特殊情况会越来越多,多到末尾无分号的方案失去其便利优势,到那个时候综合对比可能末尾写分号的代码风格会处于便利性和可靠性的优势地位。

当然都是后话了。
alian
2018-01-12 15:23:11 +08:00
表示最近几个月都不加分号开发真的很爽。。。现在这就有点尴尬了
dong3580
2018-01-12 15:49:33 +08:00
@TimRChen
看了看,我没那个配置嘛,是不是 babel-eslint 的原因呢?


root: true,
parser: 'babel-eslint',
parserOptions: {
sourceType: 'module'
},
env: {
browser: true,
commonjs: true,
es6: true,
jquery: true
},
extends: 'standard',
plugins: ['html'],
rules: {
'arrow-parens': 0,
'generator-star-spacing': 0,
quotes: ['error', 'single']
}
dong3580
2018-01-12 15:51:10 +08:00
@TimRChen
我知道了 应该加上'semi':['error','always']
deadEgg
2018-01-12 15:59:58 +08:00
“靠猜”这个说法不准确。

不加分号是存在二义性,二义性是 coder 角度的,而不是 parser 角度的。

对于 parser 来说,在你不加分号情况下得到的 AST 结构是稳定正确的。
lzszone
2018-01-12 15:59:58 +08:00
分号党昂首挺胸,为所欲为,胡作非为,肆意妄为
非分号党垂头丧气,无地自容,畏首畏尾,自暴自弃!!!
xuhai951753
2018-01-12 16:35:49 +08:00
另外我还强烈建议把两格空格写进 ES6 标准(我不是在引战)
kingwl
2018-01-12 17:24:31 +08:00
@deadEgg 未必 某些情况下正是因为 parser 区分不开才需要加分号
coolcoffee
2018-01-12 17:26:19 +08:00
@xuhai951753 空格几个或者 tab 都没什么关系,大不了每个人用不同的缩进,提交代码的时候自动格式化就好了。
leemove
2018-01-12 17:29:38 +08:00
习惯不写分号,至少少按一次最无力的小拇指 哈哈
oswuhan
2018-01-12 17:32:53 +08:00
说没写分号习惯的“前端”们,你们不写 CSS 么?号称熟练安装各种 node_module 的全栈前端开发,怎么会不写 CSS ?
vinsony
2018-01-12 17:58:29 +08:00
好不容易习惯了不加~~
skyadmin
2018-01-12 18:33:23 +08:00
@oswuhan 你知道 stylus 吗……
madNeal
2018-01-12 18:38:17 +08:00
太赞了
hr6r
2018-01-12 18:40:17 +08:00
i dissent
nosay
2018-01-12 18:48:06 +08:00
不加分号浑身难受
oswuhan
2018-01-12 19:03:23 +08:00
@skyadmin 今天撸了一天代码有点累,咱们立场不对立就歇歇。我只是想嘲讽哪些拿熟练安装第三方库以替代学习前端基础内容的人。
XueSeason
2018-01-12 19:32:52 +08:00

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

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

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

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

© 2021 V2EX