为什么添加分号有时会中断if语句

Why does adding a semicolon sometimes break an if statement?

本文关键字:中断 if 语句 添加 为什么      更新时间:2023-09-26

为什么你不应该在每组花括号后添加分号?我以为这是JavaScript的一个规则。例如,在这段代码片段中,由于初始if语句后面的分号,它无法工作,但随后else语句后面的分号就可以了。

function a() {
  if (var >= length) {
    count =
      var / length;
  };
  else {
    count = 0
  };

ifelse之间添加分号,有效地将它们分成两个独立的块。

if块可以单独存在,但else块不能单独存在,因为else依赖于if语句中的条件。

因为整个表达式包含if块。分号是在表达式完成之后引入的(if花括号之后没有必要)。当您在if后面添加分号时,您将缩短整个表达式。

从某种意义上说,你是在说:
if (foo === bar) {
    //do something
} /** You: Ok stop doing stuff**/;
/**
    Javascript: Ok! I'm done
**/
else { // Javascript: Wait, what is this crap
    //nothing's gonna happen
}

第一个}后面的分号创建一个空语句。就像你写的:

 alert('test');
 ;

这个额外的"空"语句将ifelse分开,因此else块变得毫无意义。