簡體   English   中英

for循環,console.log,返回,未定義和作用域

[英]for loops, console.log, return, undefined and scope

對於這個初學者的問題表示歉意,但我在此發布此文章是作為最后的嘗試,以便試圖了解它的實際工作原理。 我的問題是我必須使用repl.it完成一些練習,其中使用console.log打印到控制台將返回未定義的內容。 例如,如果我在其中運行以下代碼:

 function countdown(num) { for (let i = num; i > 0; i--) { console.log(i) } }; countdown(10); 

它打印:

10
9
8
7
6
5
4
3
2
1
=> undefined

現在,當我在VS Code中運行此代碼時,它會產生相同的結果,但底部沒有未定義的內容。 因為我必須使用repl.it並且不想打印未定義,所以我應該使用return嗎? 無論如何,在這種情況下最好使用return。 所以我更改了代碼,但是當然在for循環代碼塊中使用return會阻止循環運行,這是不好的。 因此,我這樣做:

 function countdown(num){ let count = 0; for (let i = num; i > 0; i--){ count = i; } return count; }; console.log(countdown(10)); 

但是然后我只得到了1個退貨。 所以我的問題是,如何不使用console.log()和任何方法以及使用return關鍵字來返回迭代倒數? 這純粹是出於我的理解,而不是針對任何特定功能。 非常感謝和抱歉。

我如何不使用console.log()和任何方法以及使用return關鍵字來返回迭代倒數計時

您可以使用生成器獲得迭代的返回值,但是您必須在每次迭代時都yield值,而不是在最后使用return值:

 function* countdown(num) { for (let i = num; i > 0; i--) { yield i; } }; console.log(...countdown(10)); 

或者,您可以創建一個數組並返回它:

 function countdown(num) { const arr = []; for (let i = num; i > 0; i--) { arr.push(i); } return arr; }; console.log(countdown(10)); 

返回一個數組。

 function countdown(num) { let count = []; for (let i = num; i > 0; i--) { count.push(i); } return count; }; console.log(countdown(10)); 

我在上面使用console.log()是因為Stack Snippets不會自動打印函數調用的值。 當您在repl.it嘗試此repl.it ,只需編寫:

countdown(10)

它將自動打印返回的數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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