【发布时间】:2017-01-22 03:12:03
【问题描述】:
在尝试调试一些错误的 JavaScript 时,我在源文件中发现了一条看起来像是明显错误的行:
false++;
我不明白为什么这个语句在所有浏览器中的行为都不同。
- 在 Chrome 中,我得到一个 ReferenceError 并且整个脚本没有运行。
- 在 Firefox 中,我得到一个 SyntaxError 并且整个脚本没有运行。
- 在 Internet Explorer 中,我得到一个 SyntaxError 并且脚本只运行到发生错误的行。
是否允许不同的浏览器以不同的方式处理相同的损坏 JavaScript?
我知道错误是什么以及如何修复它,但至少错误类型不应该由规范规定吗?
【问题讨论】:
-
规范是怎么说的?
-
@Teemu 我不知道。你呢?
-
应该是引用错误,见ECMA-262 §12.4.1:如果LeftHandSideExpression的IsValidSimpleAssignmentTarget为假,则为早期引用错误。后缀运算符尝试修改值,false 是不可变的,因此不是有效的简单赋值目标。
-
@Teemu:这些信息有什么用处?
标签: javascript syntax-error specifications referenceerror