[学习笔记]Javascript可选的分号

时间:2022-02-26 19:55:38

1.前言

  由于Javascript有自动识别一句语句的结尾,但是缺少必要分号作为结尾符,会降低代码的可读性和整洁性。通过javascript权威指南By淘宝前端团队译,这分号还算比较好玩的。

2.样例

2.1 两句语句有两行的书写

a = 3; //第一行的分号可以省略
b = 4;

2.2 两句语句一行的书写

a = 3; b = 4; //第一个分号不能省略,否则提示Uncaught SyntaxError: Unexpected identifier

2.3 容易引起误解的写法

2.3.1

var a
a
=
3
console.log(a) 

等价于 var a; a = 3;console.log(a);

2.3.2

var y = x + f
(a+b).toString()

等价于var y =  x + f(a+b).toString(0;

2.4 通常来讲,如果一条语句以'(','[','/','+','-' 开始的,那么它可能会和前一条语句合在一起解析,后三种不常见,但是前两者比较常见,所以可以保守地在语句前面多加一个分号。

var x = 0
;[x,x+1].forEach(console.log);

2.5 方法结束加不加分号都可以,安装java,C/C++的习惯是不加。

function fun{

} //};也是可以的。

2.6 如果前语句和下一行语句无法合并解析,JS则会在第一行后填补分号,这是通常规则,But有两个例外

2.6.1 第一个例外是涉及到return、break和continue语句

return
true;

会被解析成return; true; 而代码的本意是return true;

2.6.2 涉及“++”和“--”

x
++
y

等价于x; ++y; 而不是x++; y

 3. 总结

尽量写规范一些,防止编译器理解错你的表达。