簡體   English   中英

在 ES6 JavaScript 中,我們可以在 for 循環中使用 `let` 而不是在 while 循環中嗎?

[英]In ES6 JavaScript, we can use `let` in a for-loop but not in a while-loop?

以下工作:

 let re = /\\d/g; while (result = re.exec("654 321")) console.log(result);

但是,如果我們按照 for 循環的編寫方式進行操作:

 for (let i = 0; i < 10; i++) console.log(i);

 for (const a of [1,3,5]) console.log(a);

並使用(帶有錯誤的預期結果):

 let re = /\\d/g; while (let result = re.exec("654 321")) console.log(result);

那么let將破壞代碼。 ES6 中的什么規則規定在這種情況下我們不能使用let 雖然通常我們在 while 語句之前聲明一個變量,但在這種情況下,不這樣做是有意義的。 它可能會出現使用let甚至const有意義嗎?

這是因為你的 while 語句中大括號內的所有內容都是一個條件。 不能在條件內定義新變量。

由於結構的原因,您可以在 for 循環中使用 let :

for (<declare variable>;<condition>;<iterator>)

while 語句會創建一個循環,只要測試條件的計算結果為真,該循環就會執行指定的語句。 在執行語句之前評估條件:

 while (condition) statement

條件在每次通過循環之前計算的表達式。 如果此條件評估為真,則執行語句。 當條件評估為假時,繼續執行 while 循環后的語句。

statement一個可選語句,只要條件計算結果為真就執行。 要在循環內執行多個語句,請使用塊語句({ ... })將這些語句分組。

因此,在 while中用語句代替條件表達式在語法上是不正確的。 參閱此處了解更多詳情

代碼片段不適合我。 (編輯:再次嘗試並拋出錯誤)。 但無論如何它似乎是錯誤的: for循環的初始語句只執行一次。 這意味着它只定義了i一次。 但是在一段while的情況下,您一次又一次地定義result 這可能就是為什么它不被允許並引發錯誤的原因

let返回 undefined,而對 undefined 變量的賦值將返回值。

let a = 3;
// undefined;
b = 4;
// 4;

所以你的 while 循環永遠不會運行。

暫無
暫無

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

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