[英]JavaScript While loop will not print results properly to console
我的問題是我的第二個函數sum
。 但是,這里是完整的解釋:
range
函數將range
start
和end
編號作為參數,並用整個范圍填充rangeArray[]
。
sum
函數將一個數組作為參數並將數組中的所有數字相加。
我的sum
函數正在正確執行作業(用console.log()
替換return
以查看這一點),但我寧願讓 while 循環在 while 循環中斷后打印一個最終數字 (num)。
現在它只向控制台打印 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
返回,下一行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
,它返回數組中第一項的值作為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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.