《JavaScript权威指南》读书笔记1 可选的分号

绝大多数编程语言以分号结束一条语句,但在JavaScript中除非你多条语句写在同一行必须用分号隔开,否则分号是可选的。JavaScript在无法正确解析代码的时候会自动填补分号,如:

var a
a
=
3
console.log(a)

JavaScript会将其解析为:var a;a=3;console.log(a)

但是自动填补分号有很多例外情况,可能并不会如你想像般工作,比如下面的情况:

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

JavaScript会看做:var y=x+f(a+b).toString();,这明显不是你想像的:var y=x+f;(a+b).toString();

再看下面一种情况:

return
true

JavaScript会看做:return;true;,也不是你想像中的:return true;

下面的代码段也是出人意料的:

x
++
y

JavaScript会看做:x;++y;,而不是:x++;y;

总结如下

  1. 如果一条语句以“(”、“[”、“/”、“+”或“-”开始,那么它极有可能和前一条语句合在一起解析。
  2. 在return、break和continue和随后的表达式之间不能有换行。
  3. 涉及“++”和“--”运算符的时候,可以作为表达式的前缀,也可以当做表达式的后缀。如果将其用做后缀表达式,它和表达式应当在同一行。否则,行尾将填补分号,同时“++”或“--”将会作为下一行代码的前缀操作符并与之一起解析。

对于99%的人来说,这些知识都是无用的,因为很少会有人不写分号,但是如果我们不幸遇到了此类代码(希望我们永远都不会遇到),这些知识有利于我们读懂它们。

你可能感兴趣的:(《JavaScript权威指南》读书笔记1 可选的分号)