在调试一些有问题的JavaScript代码时,我发现源文件中有一个明显错误的行:
false++;
我不明白的是为什么这个语句在所有浏览器中的表现都不同。
- 在Chrome中,我会得到一个ReferenceError并且整个脚本不会运行。
- 在Firefox中,我会得到一个SyntaxError并且整个脚本不会运行。
- 在Internet Explorer中,我会得到一个SyntaxError并且脚本只能运行到错误发生的那一行。
我知道如何修复这个错误,但是至少错误类型应该由规范指定,对吗?
在调试一些有问题的JavaScript代码时,我发现源文件中有一个明显错误的行:
false++;
Chrome似乎是最新的。
false
)而非标识符进行赋值时,会抛出ReferenceError
异常。SyntaxError
)。尽管如果出现这种情况会抛出ReferenceError
异常,因此有人可能认为早期错误也应该是该类型。虽然Firefox中的错误处理可以通过ES5或ES3措辞来解释,但Internet Explorer抛出运行时SyntaxError
的行为与这些不匹配。然而,微软计划在Chakra中修复此问题。有关进一步讨论,请参见https://github.com/tc39/ecma262/issues/257和https://github.com/tc39/ecma262/issues/691。