自动分号插入机制

在看了几篇自动分号插入机制相关的文章后,有个疑问

<!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>

clipboard.png

这里会弹出2的弹框
但是第9行不符合ASI断句机制,第10行也没有( [ + - * / % , .开头 像这种两边都没有着落的 是自动合并成一行吗?

阅读 1.4k
1 个回答

解析器在在没有遇到;符号时,会继续读取后续的代码,只要和已经读取的代码结合后符合语法规则,就不会报错;
当无法构成合法语句时,之前合并的代码作为一个完整的语句返回。继续后续代码的读取解析

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题