共计 720 个字符,预计需要花费 2 分钟才能阅读完成。
问题
前一阵子猛然想到一个问题,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
正文完
发表至: javascript
2019-08-12