JavaScript语法(预备篇):到底要不要写分号呢?
winter
该思维导图由 AI 生成,仅供参考
你好,我是 winter。
在我们介绍 JavaScript 语法的全局结构之前,我们先要探讨一个语言风格问题:究竟要不要写分号。
这是一个非常经典的口水问题,“加分号”党和“不写分号”党之间的战争,可谓是经久不息。
实际上,行尾使用分号的风格来自于 Java,也来自于 C 语言和 C++,这一设计最初是为了降低编译器的工作负担。
但是,从今天的角度来看,行尾使用分号其实是一种语法噪音,恰好 JavaScript 语言又提供了相对可用的分号自动补全规则,所以,很多 JavaScript 的程序员都是倾向于不写分号。
这里要特意说一点,在今天的文章中,我并不希望去售卖自己的观点(其实我是属于“加分号”党),而是希望比较中立地给你讲清楚相关的知识,让你具备足够的判断力。
我们首先来了解一下自动插入分号的规则。
自动插入分号规则
自动插入分号规则其实独立于所有的语法产生式定义,它的规则说起来非常简单,只有三条。
要有换行符,且下一个符号是不符合语法的,那么就尝试插入分号。
有换行符,且语法中规定此处不能有换行符,那么就自动插入分号。
源代码结束处,不能形成完整的脚本或者模块结构,那么就自动插入分号。
这样描述是比较难以理解的,我们一起看一些实际的例子进行分析:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
JavaScript语法中是否要写分号一直是一个争论的话题。本文讨论了自动插入分号的规则,以及JavaScript语法中的no LineTerminator here规则。文章还提到了一些不写分号可能导致错误的情况,如以括号、数组、正则表达式、模板开头的语句。读者可以通过本文了解到JavaScript中分号的使用规则,以及不写分号可能带来的潜在问题。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《重学前端》,新⼈⾸单¥59
《重学前端》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(50)
- 最新
- 精选
- 本末倒置っ几年前,各种各样的书大致上都推荐你加分号。 几年前,曾经由于构建工具有一些问题,导致不加分号可能会出问题。 jquery依然留着分号,vue源码不用分号。 尤雨溪曾经在知乎说:真正会导致上下行解析出问题的 token 有 5 个:括号,方括号,正则开头的斜杠,加号,减号。我还从没见过实际代码中用正则、加号、减号作为行首的情况,所以总结下来就是一句话:一行开头是括号或者方括号的时候加上分号就可以了,其他时候全部不需要。 哦当然再加个反引号。 可是写分号已经习惯了,又何必花力气改习惯去掉它。不加只要不写出bug,也很好。 反正分号有和没有,对eslint fix来说,只是瞬间的事。。。2019-03-276104
- jacklovepdf总结一下,不加分号可能会有问题,加分号一定不会有问题。那为什么不加?2019-06-24520
- Scorpio写了几年一直不写分号。。。等出了问题再说吧。。。我懒。。2019-03-25113
- Rock一直有加分号的习惯,一是不写分号我有强迫症,二是不写分号webstorm会提示2019-04-19212
- 彧豪另外我个人也是不写分号,然后使用的是双引号,诸位不写分号党,如果想要写上分号,用的eslint和vs code那么可以这么搞: 1. eslintrc中加入这条规则:"semi": ["error", "always"] 2. vsc中设置一下:"eslint.autoFixOnSave": true 此时,你保存的时候,vsc会自动帮你在需要加分号的地方加上分号2019-03-2637
- 醉月用了cli写vue以后就很少用分号了 以前学js写原生的时候强迫症一样写分号 这东西就是见仁见智 前端真的是娱乐圈,, 为个分号还能争起来。2019-03-257
- Dylan-Tseng个人觉得还是加分号比较好,至少能保证加上去之后今天老师说的问题都能够得到我们想要的答案。2019-03-256
- 梦星魂加封号更好看一点,更有终止感。而且能明显和if else 这样的语句区分开来。2020-07-025
- Geek_0bb537自动补齐和自动驾驶一样 不特么靠谱!稳妥点 养成写分号的习惯!2019-04-155
- 行则将至采用eslint是不会写的,不采用会写上2019-03-254
收起评论