【发布时间】:2016-10-10 02:32:04
【问题描述】:
我目前正在学习 Eloquent Javascript 中的练习,但在一个练习中有点卡住了。让我用代码解释一下:
var _numberArray = [];
function range(start, end, step)
{
console.log(_numberArray);
if (!step)
{
step = 1;
}
if (step < 0)
{
for(var i = start; i >= end; i -= step)
{
_numberArray.push(i);
console.log(_numberArray);
}
}
else
{
for(var i = start; i <= end; i += step)
{
_numberArray.push(i);
console.log(_numberArray);
}
}
return _numberArray;
}
function sum(array)
{
var total = 0;
for (var i = 0; i < array.length; i++)
{
total += array[i];
}
return total;
}
console.log(sum(range(42,14,-2)));
所以我创建了 range 函数,用于检查 step 参数是否已设置。如果不是,则将默认步长变量设置为 1。如果步长小于 0,请确保在第一个参数大于第二个参数的情况下循环,并根据给定的步长减小值。这与递增相同。
但是,只有当我使用负值时,此代码才会导致崩溃。因此,当我执行“sum(range(22,6,-2));”时代码崩溃。反过来“sum(range(6,22,2));”它确实有效。当我更换时:
for(var i = start; i >= end; i -= step)
{
_numberArray.push(i);
console.log(_numberArray);
}
为:
for(var i = start; i >= end; i--)
{
_numberArray.push(i);
console.log(_numberArray);
}
它再次起作用了!有人可以帮助我并让我了解它为什么崩溃以及为什么最后一种方法有效吗?
谢谢。
【问题讨论】:
标签: javascript for-loop