我要強調的第一次報價
的JavaScript忽略出現標記之間在節目
程序被分成令牌空格,製表符和換行符的一部分。例如,該程序以下
var x = "abc123";
有5個令牌,即,var
,x
,=
,"abc123"
和;
。如果您在令牌之間放置更多空格,那麼
var x = "abc123" ;
這並不重要。但是如果你在一個令牌裏放置一個空間,那麼它可以改變程序。例如,
va r x = " a b c 12 3";
不能編譯。
這種差異是爲什麼這兩個陳述不矛盾。評論是被忽略的單個標記。如果你在評論中間放置一個換行符,那麼你不會在程序中的標記之間放置空格,而是在標記的中間放置一個空格。
A //
評論忽略了該行上的其餘內容。由於書籤只包含1行,因此您將在//
之後註釋掉所有內容。在一個普通的腳本中,可以有很多行,所以你不會遇到同樣的問題。
如果你很好奇這是怎麼規定的,這裏的relevant part of the grammar in the ECMAScript 5 specification:
SingleLineComment ::
// SingleLineCommentCharsopt
SingleLineCommentChars ::
SingleLineCommentChar SingleLineCommentCharsopt
SingleLineCommentChar ::
SourceCharacter but not LineTerminator
你似乎忽略了最重要的部分,即*「......那......令牌之間出現」 * – Phil
你可以將boomarklets [這裏](http://gutfullofbeer.net/escape.html)粘貼到網址編碼(和解碼)它們。 – Pointy
聲明「JavaScript忽略空格,製表符和換行符」是錯誤的。它們根本不會被忽略,它們對分離令牌,自動分號插入以及結束具有以下腳本的單行註釋至關重要。請參閱[ECMA-262第7.2節](http://ecma-international.org/ecma-262/5.1/#sec-7.2):「空白字符用於改善源文本的可讀性並分離令牌(不可分割的詞法單位)彼此相關,但是在其他方面微不足道。此外,[Line terminators](http://ecma-international.org/ecma-262/5.1/#sec-7.3)不是空格。 – RobG