在看了几篇自动分号插入机制相关的文章后,有个疑问
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
var test = false
|| 2
alert( test )
</script>
</body>
</html>
这里会弹出2的弹框
但是第9行不符合ASI断句机制,第10行也没有( [ + - * / % , .开头 像这种两边都没有着落的 是自动合并成一行吗?
解析器在在没有遇到;符号时,会继续读取后续的代码,只要和已经读取的代码结合后符合语法规则,就不会报错;
当无法构成合法语句时,之前合并的代码作为一个完整的语句返回。继续后续代码的读取解析