在 JavaScript 中使用 HTML 註釋(不好的做法)

HTML 註釋(可選地前面有空格)將導致瀏覽器忽略程式碼(在同一行),儘管這被認為是不好的做法

HTML 註釋開啟序列(<!--)的單行註釋:

注意: JavaScript 直譯器在此處忽略 HTML 註釋(-->)的結束字元。

<!-- A single-line comment.
<!-- --> Identical to using `//` since
<!-- --> the closing `-->` is ignored.

可以在遺留程式碼中觀察到此技術,以隱藏不支援它的瀏覽器中的 JavaScript:

<script type="text/javascript" language="JavaScript">
<!--
/* Arbitrary JavaScript code.
   Old browsers would treat
   it as HTML code. */
// -->
</script>

HTML 結束註釋也可以在行的開頭使用 JavaScript(獨立於開始註釋)(可選地前面有空格),在這種情況下,它也會導致行的其餘部分被忽略:

--> Unreachable JS code

這些事實也被利用來允許頁面首先將自己稱為 HTML,然後再稱為 JavaScript。例如:

<!--
self.postMessage('reached JS "file"');
/*
-->
<!DOCTYPE html>
<script>
var w1 = new Worker('#1');
w1.onmessage = function (e) {
    console.log(e.data); // 'reached JS "file"
};
</script>
<!--
*/
-->

執行 HTML 時,忽略 <!----> 註釋之間的所有多行文字,因此當以 HTML 格式執行時,其中包含的 JavaScript 將被忽略。

然而,作為 JavaScript,雖然忽略以 <!----> 開頭的行,但它們的效果不會超過行,所以跟隨它們的行(例如,self.postMessage(...)在作為 JavaScript 執行時不會被忽略,至少在它們到達之前一個 JavaScript 評論,標記為/**/。在上面的示例中使用了這樣的 JavaScript 註釋來忽略剩餘的 HTML 文字(直到 --> 也被忽略為 JavaScript)。