【问题标题】:If/else statement with no curly brackets javascript? [duplicate]没有大括号javascript的if/else语句? [复制]
【发布时间】:2015-03-06 17:20:08
【问题描述】:

我已经搜索过,但找不到这样的问题。但是,为什么这段代码有效?

    this.askTeller = function(pass) {
     if (pass == 1234) return bankBalance;
     else return "Wrong password.";
   };

不应该是这样的

this.askTeller = function(pass) {
if (pass == 1234) {
return bankBalance;
}
else {
return "Wrong password.";
};

【问题讨论】:

标签: javascript if-statement


【解决方案1】:

不应该是这样的

按理说应该是:

this.askTeller = function(pass) {
  if (pass == 1234) return bankBalance;
  return "Wrong password.";
};

this.askTeller = function(pass) {
  return pass == 1234 ? bankBalance : "Wrong password.";
};

例如,else 根本没有意义。

但是,关于{},请直言:它们是可选的。像if(和while,和for等)这样的控制流结构连接到它们后面的one语句;如果你想让它们连接到多个语句,你可以使用 block 语句 ({...}) 来做到这一点。

很多、很多、很多人总是使用 block 语句,即使他们可以不使用它,这既是为了清楚起见,也是为了更容易在块中添加第二个东西。

【讨论】:

    【解决方案2】:

    在 Javascript 中,当您只有一条语句要执行时,if/else 的大括号是可选的。请注意,如果您将在之后执行多个内容,则需要包含 {/} 否则只会将第一条语句应用于条件

    【讨论】:

      【解决方案3】:

      您可以为几乎所有块范围结构(ifforwhile 等)去掉花括号。我遇到的唯一例外(呵呵)不是trycatch

      如果不包含花括号,则只会执行块之后的第一条语句。

      var out = document.getElementById("out");
      
      for (var i = 0; i <= 5; i++) out.innerHTML += i;
      
      if (out.innerHTML === "012345") out.innerHTML += " success!";
      &lt;textarea id="out"&gt;&lt;/textarea&gt;

      【讨论】:

        【解决方案4】:

        if 语句的括号是可选的

        【讨论】:

        • 在 if 或循环 (for, while) 之后,只有在后面只有一个语句时,才能省略花括号