molily: Usereingabe auswerten

Beitrag lesen

Hallo,

replace(/x^([0-9])/g, "x^" + (parseInt("$1") + 1) + "");

Du musst dir vorstellen, wie der JavaScript-Parser und -Interpreter arbeitet: Erstmal wertet er die Expressions aus und führt erst dann den Befehl mit den angegebenen Parametern aus. Und der replace-Parameter ist ein einfacher String und keine Expression, die dann erst innerhalb von replace ausgeführt wird!

Hier haben wir die Expression »"x^" + (parseInt("$1") + 1) + ""«, die erstmal so berechnet wird:

"x^" + (parseInt("$1") + 1) + ""
=  "x^" + (NaN + 1) + ""
=  "x^" + NaN + ""
=  "x^" + NaN.toString() + ""
=  "x^" + "NaN" + ""
=  "x^NaN"

Dann wird replace(... , "x^NaN") aufgerufen. Das ist alles, was replace zu Gesicht bekommt. Erst damit arbeitet replace und ersetzt $1 ggf. durch etwas. Da kommt aber gar kein $1 mehr vor.

Mathias