XML-Tags in JavaScript als Kommentare zulaessig?

06/08/2015 - 18:47 von Christoph Schneegans | Report spam
Hallo allerseits!

Ich führe folgenden Code unter Java 1.7.0_80 aus:

final javax.script.ScriptEngine engine new javax.script.ScriptEngineManager().getEngineByName("js");
System.out.println(engine);
System.out.println(engine.eval("<foo></foo>;'x';"));

Zu meiner Überraschung erhalte ich keine Ausnahme, sondern folgende Ausgabe:

com.sun.script.javascript.RhinoScriptEngine@3bba229e
x

Anscheinend werden die XML-Tags als Kommentare aufgefaßt. Nun kann zwar
laut ECMAScript-Spezifikation '<!--' einen Kommentar einleiten, aber
'<foo' AFAICS nicht. Wieso funktioniert das hier trotzdem? Oder gibt es
eine ganz andere Erklàrung?

(Bitte Followup-To-Header beachten.)

<http://schneegans.de/usenet/mids/> · Postings verlinken
 

Lesen sie die antworten

#1 Martin Honnen
06/08/2015 - 19:20 | Warnen spam
Christoph Schneegans wrote:
Hallo allerseits!

Ich führe folgenden Code unter Java 1.7.0_80 aus:

final javax.script.ScriptEngine engine > new javax.script.ScriptEngineManager().getEngineByName("js");
System.out.println(engine);
System.out.println(engine.eval("<foo></foo>;'x';"));

Zu meiner Überraschung erhalte ich keine Ausnahme, sondern folgende
Ausgabe:


x

Anscheinend werden die XML-Tags als Kommentare aufgefaßt. Nun kann zwar
laut ECMAScript-Spezifikation '<!--' einen Kommentar einleiten, aber
'<foo' AFAICS nicht. Wieso funktioniert das hier trotzdem? Oder gibt es
eine ganz andere Erklàrung?



Was ergibt denn
var foo = <foo></foo>;
typeof foo
?

Rhino hat ja mal E4X implementiert, eventuell ist das mit der Version,
die du benutzt, so, dann ist der Ausdruck <foo></foo> kein Kommentar,
sondern eben ein Ausdruck, der ein XML-Objekt ergibt.

Spidermonkey in Mozilla hat E4X auch mal unterstützt, aber da andere
Browser mit ihren ScriptEngines das nicht getan haben, wurde die
Implementierung von E4X aus Spidermonkey wieder entfernt.


news://freenews.netfront.net/ - complaints:

Ähnliche fragen