为什么非Javascript浏览器中的Javascript代码有额外的注释

Why does this Javascript code inside a non-Javascript browser have extra commenting?

本文关键字:Javascript 注释 代码 浏览器 为什么      更新时间:2023-09-26

在W3教程中,它显示了htis代码:

<html>
<body>
<script type="text/javascript">
<!--
document.getElementById("demo").innerHTML=Date();
//-->
</script>
</body>
</html>

然后它说:

注释行(//)末尾的两个斜杠是JavaScript注释符号。这会阻止JavaScript执行-->标签。

这对我来说没有意义。我以为整件事都被评论掉了。

理解JavaScript的浏览器中,会忽略打开的<-- html注释,并执行JS代码。最后一行的JS注释//防止JS引擎将关闭的-->视为错误。在不理解JavaScript的浏览器中,<---->之间的所有内容都被视为html注释并被忽略。

这整件事对于不了解JS的浏览器来说是一种预防措施。这对于任何现代浏览器来说都不是必要的。

如果要注释掉一个JS块,请将该块封装在/**/中。

首先,W3Schools与W3没有任何关系。在人们开始抱怨之前,他们的教程非常糟糕,他们令人困惑的名字意味着他们在某种程度上与W3有联系,但实际上他们并没有。

其次,不再需要这种方法。没有使用过的浏览器不干净地支持JS(linkslynx等对JS代码没有任何问题)。

话虽如此,代码应该这样做:

<!--
I am a HTML comment
-->
<!--
If I am placed in a JS block, the web browser should ignore me
alert('and me');
-->
<!--
If you comment out the HTML comment ending tag, apparently 
the browser will treat the comment as JS code *only* 
if the browser supports JS.
//-->

如果你这样做,你会得到语法错误:

<script type="text/javascript">
<!--
document.getElementById("demo").innerHTML=Date();
-->
</script>

JavaScript不知道HTML的注释关闭-->,所以必须在脚本外对其进行注释。不需要使用HTML注释来分隔JavaScript,除非您使用一个简单的文本编辑器来为代码着色(NoteTab等)。

这一切都被注释掉了。

在没有Javascript的bowser中,<!---->之间的所有内容都将被注释掉。

试着这样想:如果你尝试了这个代码

<script type="text/javascript">
-->
</script>

那么Javascript会抛出一个错误。