js自动加分号的原则

最近在重看js高级程序设计。
每一遍读总是有不同的收获。

js包容性很高。
会在你忘了加分号的情况下帮你加上。
那自动添加分号的原则呢?

我个人理解。
在缺少分号的时候,js会把空格和换行符、注释删掉,变成一行。
如果这一行js可以执行。那么它就是一行。
如果不能执行。他就在原来换行符的地方给你补上分号。

比如

var a=1
var b=2

这一段代码,js执行不了。就在1后面加分号。

再比如:

var a
=
3

这一段代码,删掉空格和换行符、注释后,可以执行。
所以。js就编译为var a=3;
与上面例子类似的是:

a = b
(c + d).toString()

会被解析为a = b(c + d).toString()

有没有特殊情况呢?

有 return break continue;
这三个

如果写成:

return 
20

会被编译成
return;20

你可能感兴趣的:(js自动加分号的原则)