При попытке отладить некоторый дефектный кусок JavaScript, я нашел строку, которая выглядит как очевидная ошибка в исходном файле:Почему false ++ создает SyntaxError в Firefox, но ReferenceError в Chrome?
false++;
То, что я не undestand почему это утверждение ведет себя по-разному во всех браузерах.
- В Chrome у меня есть ReferenceError, и весь скрипт не запускается.
- В Firefox я получаю SyntaxError, и весь скрипт не запускается.
- В Internet Explorer я получаю SyntaxError, и сценарий запускается только до строки, где происходит ошибка.
Возможно ли, что различным браузерам разрешено обрабатывать один и тот же сломанный JavaScript по-разному?
Я знаю, что такое ошибка и как ее исправить, но не должен ли, по крайней мере, тип ошибки задаваться спецификацией?
Что говорит спецификация? – Teemu
@Teemu Я не знаю. Вы? – Lynn
Должна быть эталонная ошибка, см. [* ECMA-262 §12.4.1 *] (http://ecma-international.org/ecma-262/7.0/index.html#sec-update-expressions-static-semantics -early-errors): * Это ранняя ссылочная ошибка, если IsValidSimpleAssignmentTarget LeftHandSideExpression является ложным. * Оператор postfix пытается изменить значение, * false * является неизменным, поэтому не является допустимым простым назначением назначения. – RobG