Else vs Else If

时间:2015-07-31 14:31:12

标签: javascript

假设有以下问题:

function range(start, end, step){
  var theRange = [];
  var i = start;
  if(step === undefined){
    if(start < end)
      step = 1;
    else if(start > end)
      step = -1;
  }

  if(step < 0){
     for(;i >= end;i += step){
       theRange.push(i);
     }
  }else{ // just say Else?
    for(;i <= end;i += step){
      theRange.push(i);
    }
  }
  return theRange;
}

function sum(theRange){
  var theSum = 0;
  for(var i = 0; i < theRange.length; i++){
    theSum += theRange[i];
  }
  return theSum;
}

console.log(range(5,2));

我们试图弄清步骤是否小于0的部分 - 当步长不小于0时使用Else会更好,或者用Else明确说明其他选项会更好吗? if(step&gt; 0)?

所以,基本上我要问的是这个代码在任何方面都会更好(编译/执行时间,可读性,安全性等)?:

function range(start, end, step){
  var theRange = [];
  var i = start;
  if(step === undefined){
    if(start < end)
      step = 1;
    else if(start > end)
      step = -1;
  }

  if(step < 0){
     for(;i >= end;i += step){
       theRange.push(i);
     }
  }else if(step > 0){ // explicitly state the other possible condition
    for(;i <= end;i += step){
      theRange.push(i);
    }
  }
  return theRange;
}

function sum(theRange){
  var theSum = 0;
  for(var i = 0; i < theRange.length; i++){
    theSum += theRange[i];
  }
  return theSum;
}

console.log(range(5,2));

1 个答案:

答案 0 :(得分:3)

存在逻辑差异。 if (foo < 0) .. else ..匹配所有可能的情况。 if (foo < 0) .. else if (foo > 0) .. foo完全为0的情况不符。

除此之外,没有“安全”的好处或任何东西。它只是基本逻辑,您需要实现用例所需的逻辑。