JavaScript 中语句的分号及webstorm对其的设置

在 C 语言中,分号是语句结束的标志,在语句结束的地方一定要以分号结束。而 JavaScript 的分号却是可选的,若语句都各占一行,则可以省略分号。这是因为 JavaScript 中的 ASI 机制,允许我们省略分号。

ASI 机制

先分享一个关于 ASI 机制的介绍,感觉这个博主写的很好。ASI 机制不是说在解析过程中解析器自动把分号添加到代码中,而是说解析器除了分号还会以换行为基础按一定的规则作为断句的依据,从而保证解析的正确性。

ECMAScript 标准定义的 ASI 包括 三条规则 和 两条例外。

#三条规则是描述何时该自动插入分号:

    1.解析器从左往右解析代码(读入 token),当碰到一个不能构成合法语句的 token 时,它会在以下几种情况中在该 token 之前插入分号,此时这个不合群的 token 被称为 offending token :

        ·如果这个 token 跟上一个 token 之间有至少一个换行。
        ·如果这个 token 是 }。
        ·如果 前一个 token 是 ),它会试图把前面的 token 理解成 do...while 语句并插入分号。

    2.当解析到文件末尾发现语法还是有问题,就会在文件末尾插入分号。

    3.当解析时碰到 restricted production 的语法(比如 return),并且在 restricted production 规定的 [no LineTerminator here] 的地方发现换行,那么换行的地方就会被插入分号。

#两条例外表示,就算符合上述规则,如果分号会被解析成下面的样子,它也不能被自动插入:

    1.分号不能被解析成空语句。
    2.分号不能被解析成 for 语句头部的两个分号之一。

建议

虽然不加分号,代码看起来会更加的简洁,但是为了避免歧义,还是句末加上分号比较好。
当然,这个也是看个人习惯,项目一定要风格统一,养成良好的代码习惯。
还有ESLint,这个东西的使用在前期会非常蛋疼,但是用好后,对于保证代码风格的一致性有很好的帮助。

webstorm对于分号机制的设置

见图
这里写图片描述
此处可以设置项目中是否句末加分号。按Ctrl + alt + L 的时候非常方便。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值