Bei dem Versuch, einige fehlerhafte Stück JavaScript zu debuggen, fand ich eine Linie, die in einer Quelldatei wie eine offensichtliche Fehler aussieht:Warum erzeugt false ++ in Firefox einen SyntaxError, in Chrome aber einen ReferenceError?
false++;
Was undestand ich nicht wissen, ist, warum diese Aussage in allen Browsern anders verhält.
Ist es von Entwurf, dass verschiedene Browser das gleiche kaputte JavaScript auf unterschiedliche Weise behandeln dürfen?
Ich weiß, was der Fehler ist und wie es zu beheben, aber sollte nicht zumindest der Fehlertyp von der Spezifikation vorgeschrieben werden?
Was sagt der spec? – Teemu
@Teemu Ich weiß es nicht. Machst du? – Lynn
Es sollte ein Referenzfehler, siehe [* ECMA-262 §12.4.1 *] sein (http://ecma-international.org/ecma-262/7.0/index.html#sec-update-expressions-static-semantics -early-errors): * Es ist ein früher Reference Error, wenn IsValidSimpleAssignmentTarget von LeftHandSideExpression false ist. * Der Postfix-Operator versucht den Wert zu ändern, * false * ist unveränderlich, also kein gültiges einfaches Zuweisungsziel. – RobG