JavaScript 中,如果语句各自独占一行,通常可以省略语句之间的分号。
- JavaScript 并不是在所有换行处都填补分号:只有在缺少了分号就无法正确解析代码的时候,JavaScript 才会填补分号。
例子:
var x = y + foo
(a+b).toString()
解析为:
var x = y + foo(a+b).toString(); // 第二行的圆括号和第一行的 foo组成了函数调用
如果当前语句和下一行语句无法合并解析,JavaScript 则在第一行后填补分号,但有两个例外:
①在涉及return、break和continue语句的场景中。如果这三个关键字后紧跟着换行,JavaScript 则会在换行处填补分号。例如:
return
true;
解析为:
return; true;
做个小题(答案在结尾)
②在涉及“++”和“–”运算符的时候,如果将其用作后缀表达式,它和表达式应该在同一行。否则,行尾将填补分号,同时“++”或“–”将会作为下一行代码的前缀操作符并与之一起解析。例如:
x
++
y
这段代码将解析为x; ++y,而不是x++; y。
2. 如果一条语句以(、[、/、+或-开始,那么它极有可能和前一条语句合在一起解析。
以“/”、“+”和“-”开始的语句并不常见,而以“(”和“[”开始的语句则非常常见。所以一些保守的程序员为保守起见,喜欢在语句前加上一个分号以保证程序的正确执行。例如:
var x = 0 // 这里省略了分号
;[x, x+1, x+2].forEach(console.log) // 前面的分号保证了正确地语句解析
答案:C