Ich optimiere mehrere js Dateien zu einem mit r.js
. Es funktioniert gut vorher. Kürzlich habe ich etwas js-Code geändert, füge den Code als:
dann zeigt es
FEHLER: parse Fehler mit esprima für die Datei D: //webroot/js/a.js
FEHLER: Zeile 45: Unerwartetes Token ILLEGAL.
In Zeile 45 füge ich var x = 08
hinzu, und 09
zeigt ebenfalls einen Fehler an. Es schien, dass Zahlen, die mit 0 beginnen und mittlerweile 8
oder 9
enthalten, illegal sind. Vielleicht wurden sie als Nummer 8 behandelt ..?
Wie kann ich r.js
diesen Punkt ignorieren und trotzdem js Dateien optimieren?
Der Fehler ist auf Esprima zurückzuführen, das r.js
intern verwendet. Um das Problem zu replizieren, können Sie diese Seite aufrufen und var x = 08;
Im Allgemeinen scheint es, dass JavaScript-Interpreter eine Zahl mit einer führenden Null behandeln, die kann als Oktalzahl als Oktalzahl interpretiert werden, aber wenn sie nicht als Oktalzahl interpretiert werden kann (z 08), dann behandeln sie es als Dezimal.
Ich habe einen Test mit Node.js gemacht und folgendes bekommen:
%Vor%Und für noch mehr Spaß:
%Vor%Wenn der strikte Modus aktiviert ist, sind Oktale ungültig.
Ich würde Oktaven vermeiden und niemals eine Zahl mit Nullen in JavaScript voranstellen.
Ich hatte auch das gleiche Problem, während ich eine sehr lange Zeichenfolge analysiere:
%Vor%Es stellt sich heraus, dass ich in der Zeichenfolge auch einige Kommentare wie folgt eingefügt habe:
%Vor%Wenn ich alle CSS-Kommentare in der Zeichenfolge lösche, funktioniert es!
Hoffe, das hilft.
Tags und Links javascript requirejs r.js