Beim Debuggen eines fehlerhaften Teils von JavaScript habe ich eine Zeile gefunden, die wie ein offensichtlicher Fehler in einer Quelldatei aussieht:
%Vor%Was ich nicht verstehe ist, warum sich diese Anweisung in allen Browsern anders verhält.
Ist es von vornherein möglich, dass verschiedene Browser dasselbe kaputte JavaScript auf unterschiedliche Weise behandeln?
Ich weiß, was der Fehler ist und wie er behoben werden kann, aber sollte nicht zumindest der Fehlertyp von der Spezifikation vorgeschrieben werden?
Chrome scheint auf dem neuesten Stand zu sein.
ReferenceError
geworfen Wenn Sie versuchen, einem primären Ausdruck zuzuweisen , der a Literal (z. B. false
) kein Bezeichner. SyntaxError
s) von unspezifiziert type wird für Zuordnungen " auf jeden Wert geworfen, für den eine frühzeitige Feststellung getroffen werden kann, dass der Wert kein Referenz ", obwohl wenn es passieren würde wäre ein ReferenceError
So könnte man argumentieren, dass der frühe Fehler auch von diesem Typ sein sollte. Während die Fehlerbehandlung in Firefox durch die ES5- oder ES3-Formulierung entschuldigt werden kann, entspricht das Verhalten, dass Internet Explorer eine Laufzeit SyntaxError
wirft, keiner von diesen. Microsoft plant jedoch, dies in Chakra zu beheben . Weitere Informationen finden Sie unter Ссылка und Ссылка .
Nur eine Vermutung, aber vielleicht prüft Firefox zuerst Syntaxfehler, & amp; Chrome prüft zuerst Referenzfehler. Der erste Fehler wird ausgelöst, & amp; geht nicht weiter. Der Hauptgrund für den Fehler ist, dass "false" ein boolescher Wert ist, kein Integer- oder numerischer Wert, daher kann er nicht inkrementiert oder dekrementiert werden. Ohne den Quellcode zu sehen, würde ich versuchen, false in etwas wie var falseCount zu ändern.
Tags und Links javascript syntax-error specifications referenceerror