资讯专栏INFORMATION COLUMN

JS语句后加不加分号

OnlyLing / 3021人阅读

摘要:问题前一阵子猛然想到一个问题有分号自动补全机制在写时我是习惯性在语句后面加上分号在块语句后面不加分号。关于加不加分号的问题知乎上一些回答这个问题的大佬普遍意见是喜欢就好。

问题

前一阵子猛然想到一个问题,JS有分号自动补全(ASI)机制,在写JS时我是习惯性在语句后面加上分号,在块语句后面不加分号。那么如果没有加分号的话,在什么情况下会出现问题?在JS语句后到底是应该加分号还是不加分号?

解决问题

面对这个问题,我来了兴趣。于是在网上查了一些资料。关于加不加分号的问题,知乎上一些回答这个问题的大佬普遍意见是,喜欢就好。嗯,很直接。
关于不加分号容易产生问题的地方,我在看了多个地方的贴子总结了一下,基本就三个地方出现问题比较多:
1)如果下一行的第一个token是 ( , [ , / , + , - 这五个字符之一的话, Javascript 将不会自动在上一行句尾加上分号。所以,当下一行的第一个token是以上字符时,应当在上一行或者行首加上分号
2)continue、return、break、throw后自动插入分号。所以当 return 出一个值,千万不要将那个值与 return 不在同一行,不然返回的结果是 undefined 而不是你期望的值。
3)++ , -- 后缀表达式作为新行开始,会在行首自动插入分号,
关于我自己每回没有在块语句后面没有加分号,对于我这个强迫症来说是不是不严谨的问题,我也在一篇贴子中找到了答案, 那就是 {...} 属于块语句,而按照定义块语句是不需要分号结尾的,不管是不是在一行 , 嗯,我果然没有错。

总结

看了那么多贴子后,我感觉还是在语句后面加分号比较好,毕竟虽然麻烦一点,但是看得舒服(个人感觉),而且可以避免一些不必要的问题。

参考链接:

知乎: https://www.zhihu.com/question/20298345
ASI机制: https://segmentfault.com/a/1190000004548664

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106695.html

相关文章

  • JavaScript里的语句分号结尾是个选项吗

    摘要:在以下的种情况是用回车或换行,是不会作自动插入分号来让语句作结尾。以下情况必用分号。但有例外,赋值时可以加分号是对的语法。 起因 这个文章一开始回覆于这篇回答中: javascript初级问题 也有之前的朋友写信来问,因为在读到我个人写的一本电子书: 从ES6开始的JavaScript学习生活,繁体,gitbook。我在写作风格里有说明,这本电子书中的范例都是使用不用分号(;)作为代码...

    stormzhang 评论0 收藏0
  • Javascript分号,加还是不加

    摘要:本文同步自我的博客园关于这个问题,网上已经有很多人讨论过了,我先说说自己对这个问题的回答加但非必须有些人写代码,懒得加分号,除非是迫不得已才勉强放一个分号上去。 本文同步自我的博客园:http://hustskyking.cnblogs.com 关于这个问题,网上已经有很多人讨论过了,我先说说自己对这个问题的回答:加!(但非必须) 有些人写代码,懒得加分号,除非是迫不得已才勉强放一...

    Coding01 评论0 收藏0
  • JavaScript ASI 机制详解

    摘要:最近在清理的未读列表,看到了才知道了的,一种自动插入分号的机制。这种行为被叫做自动插入分号,简称。不过在省略分号的风格中,这种解析特性会导致一些意外情况。规则标准定义的包括三条规则和两条例外。规则一情况三就是为量身定做的。 TL;DR 最近在清理 Pocket 的未读列表,看到了 An Open Letter to JavaScript Leaders Regarding Semico...

    frontoldman 评论0 收藏0
  • 编写可维护的javascript

    摘要:为什么要编写可维护的软件生命周期的成本消耗在了维护上。相等具有强制类型转换的机制。检测字符串检测数字检测布尔值检测检测引用值引用值也称为对象,检测某个引用值的类型的官方最好的方法是使用运算符。 为什么要编写可维护的javascript? 软件生命周期80%的成本消耗在了维护上。 几乎所有的软件维护者都不是它的最初作者。 编码规范提高了软件的可读性,它让工程师能够快速且充分地理解新的代...

    singerye 评论0 收藏0
  • 编写可维护的javascript

    摘要:为什么要编写可维护的软件生命周期的成本消耗在了维护上。相等具有强制类型转换的机制。检测字符串检测数字检测布尔值检测检测引用值引用值也称为对象,检测某个引用值的类型的官方最好的方法是使用运算符。 为什么要编写可维护的javascript? 软件生命周期80%的成本消耗在了维护上。 几乎所有的软件维护者都不是它的最初作者。 编码规范提高了软件的可读性,它让工程师能够快速且充分地理解新的代...

    weknow619 评论0 收藏0

发表评论

0条评论

OnlyLing

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<