使用"否则如果"而不是"否则"什么时候没有其他可能性

时间:2015-01-13 17:34:10

标签: javascript

最近,我在Javascript中看到了这样的if / else块 - 虽然同样的问题可以应用于任何命令式语言

if (cond) {
  ....
} else if (!cond) {
  ....
}

问题:if (!cond)之后else的目的是什么?如果没有其他可能性,我为什么不单独使用else

我的观点是if (!cond)是多余的,应该被删除,我正在寻找文档的指针来证实这一点。

6 个答案:

答案 0 :(得分:4)

假设这两个条件是相同的(除了否定之外),那就好像(在我个人看来)编写得不好的代码。

答案 1 :(得分:1)

代码仍然不好,但也许不是那么无意义:

var a = 1;
if(--a){
  el.innerHTML = 'here ' + a;
}else if(!(--a)){
  el.innerHTML += ', there ' + a;
}

显然没有el.innerHTML被执行。重点是,除了可读性之外,逻辑上结构根本不是多余的。

答案 2 :(得分:1)

有一个边缘情况,这与if else不同,那就是条件正在做某事。但这不是理由,因为它导致难以阅读代码。

var silly = true;
function test() {
  silly = !silly;
  return silly;
}

if (test()) {
  console.log(silly);
} else if (!test()) {
  console.log(silly);
} else {
  console.log('silly')
}

答案 3 :(得分:0)

以这种方式使用else if;它本质上是这样的:

if (cond)
{
    ....
}
else
{
    if (!cond)
    {
        ....
    }
}

所以是的,完全没有意义

答案 4 :(得分:0)

我建议:

  1. 最初有另一个选项被重构
  2. 另一种选择很可能在不久的将来(有些人不做YAGNI)
  3. 也许只是写得很糟糕的代码。
  4. 正如你所说,如果声明中没有其他选项那么就没有指向它

答案 5 :(得分:0)

if (cond) {
  ....
} else if (!cond) {
  ....
}

表示与

完全相同
if (cond) {
  ....
} else {
  ....
}

编写您看到的代码的人,很可能在if中有更多条件,只需在调试时将其更改为else if(!cond),而不是将其注释掉并添加else部分。