【发布时间】:2016-09-30 19:47:19
【问题描述】:
我正在尝试在 javascript 中创建一个函数,该函数从 range(start,end) 返回一个数组,并且我应该创建一个可选参数,当它未定义时默认为一个。当我提供所有参数时,我可以让函数工作,但当我只传递两个参数时返回一个空数组。问题来了:
编写一个范围函数,它接受两个参数,start 和 end,并返回一个数组,其中包含从 start 到(包括)end 的所有数字。
接下来,编写一个 sum 函数,它接受一个数字数组并返回这些数字的总和。运行前面的程序,看看它是否确实返回了 55。
作为一个额外的分配,修改你的 range 函数以采用可选的第三个参数,该参数指示用于构建数组的“步长”值。如果未指定步长,则数组元素以 1 为增量递增,对应于旧行为。函数调用 range(1, 10, 2) 应该返回 [1, 3, 5, 7, 9]。确保它也适用于负步长值,以便 range(5, 2, -1) 产生 [5, 4, 3, 2]。
这是我的代码:
function range(start, end, increment){
var array = [];
var current = start;
var counter;
if (increment == undefined){
counter = 1;
}
else {
counter = increment;
}
if (increment > 0){
while(current <= end){
array.push(current);
current += counter;
}
}
else if (increment < 0){
while(current >= end){
array.push(current);
current += counter;
}
}
return array;
}
有人能解释为什么它会坏吗?我知道一些 c#,并且我曾经能够在出现与 javascript 不同的问题时跳入 Visual Studio 中的调试器。
【问题讨论】:
-
JS 也有很多调试器。 Chrome中的那个可能是最好的。弹出它,您将能够单步执行代码。
-
常见的 JS 习语 if undefined, be this instead 是:
var counter = increment || 1; -
@4castle 你能进一步解释一下吗?不太确定这是如何工作的。使用
?运算符会更好吗? -
@Nate 请参阅this question,它很好地解释了它。如果左边的值为 falsey(又名
undefined、null、0、""、false或NaN),那么它将分配右边的值.
标签: javascript