JavaScript While 循环不会将结果正确打印到控制台
JavaScript While loop will not print results properly to console
我的问题出在我的第二个函数 sum
上。然而,这里是完整的解释:
range
函数以范围的 start
和 end
数字作为参数,并用整个范围填充 rangeArray[]
。
sum
函数接受一个数组作为参数,并将数组中的所有数字相加。
我的 sum
函数正在正确执行作业(将 return
替换为 console.log()
以查看),但我宁愿让 while 循环打印一个最终数字 (num)在 while 循环中断后。
现在它只向控制台打印 10(我怀疑是因为它正在打印数组中的最后一个元素 + 0,在本例中为 10)。
tl;博士
为什么在函数 sum
中断后的 while 循环后 console.log(n)
不工作?
rangeArray = []
function range(start, end) {
i = 0
while (i < end) {
rangeArray.push(start)
i = i + 1
start = start + 1
}
}
range(1, 10)
function sum(array) {
num = 0
i = 0
lastIndex = array.length - 1
while (i <= lastIndex) {
return num = num + array.pop()
i++
}
console.log(n)
}
sum(rangeArray)
从 while
循环中删除 return
,这将从函数 sum
中 return 并且下一行 console.log
将不会执行。
另一个问题是,您正在记录 n
,其中变量的名称是 num
。
rangeArray = []
function range(start, end) {
i = 0
while (i < end) {
rangeArray.push(start)
i = i + 1
start = start + 1
}
}
range(1, 10)
function sum(array) {
num = 0
i = 0
lastIndex = array.length - 1
while (i <= lastIndex) {
num = num + array.pop()
i++
}
document.write(num);
}
sum(rangeArray);
如果您正在寻找优化的解决方案:
function sum(start, end) {
var total = 0;
while (start <= end) {
total += start++;
// Add the start value to total
// Increment the start value by one
}
document.write(total);
return total;
}
var total = sum(1, 10);
问题出在while循环中的return
,其中returns数组中第一项的值作为sum
的值
function range(start, end) {
var rangeArray = [],
i = start; //use var to create it as a local variable
while (i <= end) {
rangeArray.push(i);
i++;
}
return rangeArray;
}
var rangeArray = range(1, 10)
snippet.log('range: ' + rangeArray)
function sum(array) {
var num = 0,
i = 0,
len = array.length
while (i < len) {
num += array[i];
i++
}
snippet.log('sum: ' + num)
return num;
}
sum(rangeArray)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
你可以像
这样写得更干净
function range(start, end) {
var rangeArray = [],
i = start; //use var to create it as a local variable
while (i <= end) {
rangeArray.push(i);
i++;
}
return rangeArray;
}
var rangeArray = range(1, 10)
snippet.log('range: ' + rangeArray)
function sum(array) {
var num = array.reduce(function(a, b) {
return a + b
});
return num;
}
var val = sum(rangeArray);
snippet.log('sum: ' + val)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
我的问题出在我的第二个函数 sum
上。然而,这里是完整的解释:
range
函数以范围的 start
和 end
数字作为参数,并用整个范围填充 rangeArray[]
。
sum
函数接受一个数组作为参数,并将数组中的所有数字相加。
我的 sum
函数正在正确执行作业(将 return
替换为 console.log()
以查看),但我宁愿让 while 循环打印一个最终数字 (num)在 while 循环中断后。
现在它只向控制台打印 10(我怀疑是因为它正在打印数组中的最后一个元素 + 0,在本例中为 10)。
tl;博士
为什么在函数 sum
中断后的 while 循环后 console.log(n)
不工作?
rangeArray = []
function range(start, end) {
i = 0
while (i < end) {
rangeArray.push(start)
i = i + 1
start = start + 1
}
}
range(1, 10)
function sum(array) {
num = 0
i = 0
lastIndex = array.length - 1
while (i <= lastIndex) {
return num = num + array.pop()
i++
}
console.log(n)
}
sum(rangeArray)
从 while
循环中删除 return
,这将从函数 sum
中 return 并且下一行 console.log
将不会执行。
另一个问题是,您正在记录 n
,其中变量的名称是 num
。
rangeArray = []
function range(start, end) {
i = 0
while (i < end) {
rangeArray.push(start)
i = i + 1
start = start + 1
}
}
range(1, 10)
function sum(array) {
num = 0
i = 0
lastIndex = array.length - 1
while (i <= lastIndex) {
num = num + array.pop()
i++
}
document.write(num);
}
sum(rangeArray);
如果您正在寻找优化的解决方案:
function sum(start, end) {
var total = 0;
while (start <= end) {
total += start++;
// Add the start value to total
// Increment the start value by one
}
document.write(total);
return total;
}
var total = sum(1, 10);
问题出在while循环中的return
,其中returns数组中第一项的值作为sum
function range(start, end) {
var rangeArray = [],
i = start; //use var to create it as a local variable
while (i <= end) {
rangeArray.push(i);
i++;
}
return rangeArray;
}
var rangeArray = range(1, 10)
snippet.log('range: ' + rangeArray)
function sum(array) {
var num = 0,
i = 0,
len = array.length
while (i < len) {
num += array[i];
i++
}
snippet.log('sum: ' + num)
return num;
}
sum(rangeArray)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
你可以像
这样写得更干净function range(start, end) {
var rangeArray = [],
i = start; //use var to create it as a local variable
while (i <= end) {
rangeArray.push(i);
i++;
}
return rangeArray;
}
var rangeArray = range(1, 10)
snippet.log('range: ' + rangeArray)
function sum(array) {
var num = array.reduce(function(a, b) {
return a + b
});
return num;
}
var val = sum(rangeArray);
snippet.log('sum: ' + val)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>