簡體   English   中英

JavaScript While 循環不會將結果正確打印到控制台

[英]JavaScript While loop will not print results properly to console

我的問題是我的第二個函數sum 但是,這里是完整的解釋:

range函數將range startend編號作為參數,並用整個范圍填充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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM