一个令人困惑的 Javascript 解析难题

主要观点:这段代码会打印出1-->在一行的开头(且仅在开头)开始一个注释,代码被解析为x = 1; x; // 0,浏览器显示最后一个表达式的值即1。这是一个遗留的技巧,早期浏览器会将<script>内容视为普通文本,为确保优雅降级,开发者会用<!---->包裹脚本,现在所有现代浏览器都识别<script>,2015 年标准将<!---->作为合法注释标记,<!---->//一样是行注释,-->仅在行首有效,<!--可在行中任何位置,现代浏览器和 Node、Electron 都支持此语法,纯文本浏览器如 Lynx 会忽略<script>内容但会识别该标签。

关键信息:x = 1赋值,x; // 0// 0被视为注释,现代浏览器对<script>的处理变化,<!---->的语法规则及支持情况,Lynx 对<script>的处理。

重要细节:Netscape Navigator 2 引入 JavaScript 和<script>标签,旧浏览器将<script>内容视为普通文本,开发者用<!--包裹脚本,2015 年标准添加<!---->,现代浏览器要求支持此语法,Node 和 Electron 共享 Chromium 的 v8 引擎,纯文本浏览器 Lynx 会忽略<script>内容但识别标签等。

阅读 7
0 条评论