我刚开始学习JavaScript并得到一个非常基本的问题。
我将创建一个我调用printAnyRange()
的函数,该函数有两个参数:rangeStart
和rangeStop
。我希望这返回一个字符串,其中所有数字都以逗号分隔。
如果rangeStart
小于rangeStop
,则应调用函数printRange()
。
如果rangeStart
大于rangeStop
,则应调用函数printRangeReversed()
。
我的问题是,我应该使用for
循环来执行此操作,还是使用if-else
更好?
答案 0 :(得分:0)
鉴于你已经概述它应该调用2个可能的函数中的1个,除了使用if / else语句之外别无选择。如果你想取消两个函数调用,而是使用for循环向前或反向,那么你仍然需要一些if(以及其他可能的话)某些描述的声明来将它们组合在一起。
if(rangeStart <= rangeStop)
{
printRange(rangeStart, rangeStop);
}
else
{
printReverseRange(rangeStart, rangeStop);
}
或
var start = rangeStart;
var stop = rangeStop;
var inc = 1;
if(rangeStart > rangeStop)
{
var start = rangeStop;
var stop = rangeStart;
var inc = -1;
}
for(var i = start; inc == 1 ? start <= stop : start >= stop; i += inc)
{
console.log(i);
}
答案 1 :(得分:0)
您只能使用if-else来选择要调用的方法。要生成范围,您需要包含一个循环。
您还可以按照基本递归来避免创建3种不同的方法。
var printRange = function (num1, num2) {
/* If num2 is smaller, call same function with arguments reversed */
if (num1 > num2) return printRange (num2, num1);
/* Otherwise, calculate the stuff you want */
var result = [];
for (num1; num1 <= num2; num1++) {
result.push(num1);
}
return result.join(',');
};
此方法适用于您描述的所有情况。