js行结尾,是否必须写分号

1 结论

在 C 语言中,分号是语句结束的标志,在语句结束的地方一定要以分号结束。而 JavaScript 的分号却是可选的(optional),若语句都各占一行,则可以省略分号。为增强代码可读性,减少歧义,建议在表达式末尾使用分号。多个表达式之间,也可以使用逗号分隔。

2 可以省略分号的情形

一条语句代表着一条javascript命令,通常以分号(;)结尾。因此,javascript的分号(;)是用于分隔语句的符号。
可将分号“;”省略的几种情形:

(1)语句各自独占一行,通常可以省略结尾的分号;
(2)程序结束或者右花括号(})之前的分号也可以省略;

javascript懒汉原则:不添加分号“;”就可以顺利解析的语句,不会主动添加分号(;)再进行解析。javascript只有在缺少分号就无法正确解析代码的时候,javascript才会填补分号。

语句各自独占一行,通常可以省略结尾的分号。
a=3;
b=4;
那么a=3后面的;可以省略
a=3; b=4;
那么a=3后面的分号不能省略。此时,写成a=3, b=4也可

例外情形:第一个例外是在涉及return、break和continue语句的场景中,如果这三个关键字后面紧跟着换行,javascript则会在换行处填补分号。

第二个例外是在涉及“++”和“–”运算符的时候,这些运算符可以作为表达式的前缀,也可以当做表达式的后缀。如果将其用做后缀表达式,它和表达式应该在同一行。否则,行尾将填补分号,同时“++”或“–”姜维作为下一行代码的前缀操作符,并与之一起解析。

3 ASI 机制(Automatic semicolon insertion)

JavaScript 中的 ASI 机制,允许我们省略分号。ASI 机制不是说在解析过程中解析器自动把分号添加到代码中,而是说解析器除了分号还会以换行为基础按一定的规则作为断句的依据,从而保证解析的正确性。*

ASI 规则
1 新行并入当前行构成非法语句时,自动插入分号
2 continue, return, break, throw 后自动插入分号
例如:

return 
a+b

return;
a+b

的含义是一样的,都是返回空值,而不是返回a+b;
3 ++, – 后缀表达式作为新行开始,会在行首自动插入分号
4 代码块的最后一个语句会自动插入分号

4 注意事项

    不要将 ++ 或 -- 放在同一行
    如果 return 后有参数,不要将参数放在独立的行
    不要将括号的开始放在新的一行,理由为上一条

你可能感兴趣的:(js,js)