Ergibt HTML-Kommentar! - In JavaScript als einzeiliger Kommentar, und warum?

8

Wie versteht JavaScript das Konstrukt <!-- ? Aus der Sicht von JavaScript, ist es noch ein weiterer Kommentar zusätzlich zu // und /* */ ?

Beim Testen scheint JavaSript <!-- wie // zu behandeln: ein Einzeiler

%Vor%

tut nichts, während

%Vor%

funktioniert wie erwartet.

Wo wird dieses Verhalten dokumentiert?

Dies ist kein Duplikat anderer Fragen: Ich frage nicht warum oder ob oder wie es verwendet werden sollte. Ich frage, welche Syntax und Semantik es in JavaScript hat, formal. Die Frage ist nicht trivial und wird in anderen Fragen nicht beantwortet: Zum Beispiel kann das oben angegebene Verhalten nicht aus den anderen Fragen und ihren Antworten erraten werden (tatsächlich war das meine Motivation: Mein Programm mit einem Einzeiler wie oben nicht Arbeit, und diese Fragen und Antworten waren keine Hilfe zu verstehen, warum).

    
Alexander Gelbukh 03.03.2015, 21:50
quelle

1 Antwort

8
  

Beim Testen scheint JavaSript <!-- wie // ein Einzeiler zu behandeln

Ja, wie in der ES6-Spezifikation spezifiziert, Anhang B :

  

B.1.3 HTML-ähnliche Kommentare

%Vor%

Beachten Sie jedoch die Beschreibung von Anhang B:

  

Dieser Anhang beschreibt verschiedene Legacy-Funktionen und andere Eigenschaften von webbrowserbasierten ECMAScript-Implementierungen. Alle Sprachmerkmale und Verhaltensweisen, die in diesem Anhang aufgeführt sind, weisen ein oder mehrere unerwünschte Merkmale auf und würden bei fehlender Legacy-Nutzung aus dieser Spezifikation entfernt. Die Verwendung dieser Funktionen durch eine große Anzahl bestehender Webseiten bedeutet jedoch, dass Webbrowser diese weiterhin unterstützen müssen. Die Spezifikationen in diesem Anhang definierten die Anforderungen für interoperable Implementierungen dieser Legacy-Funktionen.

     

Diese Funktionen werden nicht als Teil der ECMAScript-Kernsprache betrachtet. Programmierer sollten beim Erstellen eines neuen ECMAScript-Codes nicht davon ausgehen, dass diese Features und Verhaltensweisen vorhanden sind. ECMAScript-Implementierungen werden davon abgehalten, diese Funktionen zu implementieren, es sei denn, die Implementierung ist Teil eines Webbrowsers oder wird benötigt, um denselben alten ECMAScript-Code auszuführen, den Webbrowser kennen.

Dieser Teil existiert also nur, um existierendes "inoffizielles" Verhalten zu beschreiben und sobald die Browser aufhören, dieses Verhalten zu implementieren, wird es aus der Spezifikation entfernt.

    
Felix Kling 03.03.2015, 22:16
quelle

Tags und Links