假设有以下问题:
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));
答案 0 :(得分:3)
存在逻辑差异。 if (foo < 0) .. else ..
匹配所有可能的情况。 if (foo < 0) .. else if (foo > 0) ..
与foo
完全为0的情况不符。
除此之外,没有“安全”的好处或任何东西。它只是基本逻辑,您需要实现用例所需的逻辑。