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不被视为语法错误?
不同之处在于,在第二种情况下,回车使第二个支撑块成为独立块,而不是其中括号部分是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)