请考虑以下三行Java语言。
console.log(1);
--> console.log(2);
console.log(3);
我希望它会导致Syntax Error
,可能类似于Unexpected token --
。
相反,浏览器似乎接受代码,只是忽略第二行,产生输出:
› 1
› 3
我尝试将代码段粘贴到Chrome,Safari和Firefox的控制台中。它们的行为均相同。发生了什么事?
答案 0 :(得分:3)
这是旧版浏览器的HTML注释的一部分,该浏览器具有以下模式:在不支持<script>
标签的浏览器中包含Javascript部分。
<script>
<!--
// some code
-->
</script>
答案 1 :(得分:2)
显然ECMAScript正式允许"HTML like" comments:
B.1.3类似HTML的注释
11.4的语法和语义扩展如下,不同之处在于,使用目标符号模块解析源代码时不允许此扩展:
import sys
print (sys.version)
# 3.6.5 |Anaconda, Inc.
import matplotlib
print (matplotlib.__version__)
# 2.2.2
! jupyter notebook --version
# 5.5.0
建议将HTMLCloseComment::
WhiteSpaceSequence opt SingleLineDelimitedCommentSequence opt --> SingleLineCommentChars opt
之后的所有内容都视为注释。
答案 2 :(得分:1)
在控制台上打扰似乎证明了Nina的情况
-->
undefined
typeof -->
Uncaught SyntaxError: Unexpected token >
--> = "foo"
undefined
-->
undefined
--<
Uncaught SyntaxError: Unexpected token <
<--
Uncaught SyntaxError: Unexpected token <
<!--
undefined
<!-- foo -->
undefined
这些关键字似乎设置为始终返回未定义。