JavaScript解释器忽略语法错误

Mac*_*och 3 javascript syntax-error

这段简短的代码显然是错误的:

if (5 > 2) {
  console.log("5 > 2");
} else (5 < 2) {
  console.log("5 < 2");
}
Run Code Online (Sandbox Code Playgroud)

条件else不应该被指定.SyntaxError: Unexpected token {正如预期的那样,将导致执行此代码.


问题在于,在稍微改变(将左括号转移到新行)之后,解释器将忽略语法错误.

这段代码:

if (5 > 2) {
  console.log("5 > 2");
} else (5 < 2)
{
  console.log("5 < 2");
}
Run Code Online (Sandbox Code Playgroud)

导致此输出(在chrome和firefox中测试):

5 > 2
5 < 2
Run Code Online (Sandbox Code Playgroud)

这怎么可能?为什么这else不被视为语法错误?

Doc*_*Max 6

不同之处在于,在第二种情况下,回车使第二个支撑块成为独立块,而不是其中括号部分是else子句的else子句的一部分.第二种情况相当于:

if (5 > 2) {
    console.log("5 > 2");
} else {
    (5 < 2)
}

{
    console.log("5 < 2");
}
Run Code Online (Sandbox Code Playgroud)

这只是:

if (5 > 2) {
    console.log("5 > 2");
} else {
    false
}

console.log("5 < 2");
Run Code Online (Sandbox Code Playgroud)