據說“RETURN”陳述句會終止javascript中的for回圈,但在這種情況下,代碼仍然會輸出3,為什么?這是否意味著 return 陳述句不會終止回圈?
var printNumTwo;
for (var i = 0; i < 3; i ) {
if (i === 2) {
printNumTwo = function() {
return i;
};
}
}
console.log(printNumTwo());
uj5u.com熱心網友回復:
@jeremy-thille解釋了回圈如何繼續并i變為 3。此外,發生這種情況i是因為不在回圈范圍內。如果您使用let分配i,則它在回圈范圍內(塊范圍),結果將如預期的那樣。
let printNumTwo;
for (let i = 0; i < 3; i = 1) {
if (i === 2) {
printNumTwo = () => i;
}
}
console.log(printNumTwo());
uj5u.com熱心網友回復:
你可以添加console.log來理解。因為,printNumTwo = function(){}是函式的定義而不是執行。您可以嘗試其他示例:
var printNumTwo;
for (var i = 0; i < 3; i ) {
console.log('before', i);
printNumTwo = function() {
console.log('end', i);
return i;
};
if (i === 2) {
console.log('process', i);
};
console.log('after', i);
}
console.log(printNumTwo());
/* ouput
> "before" 0
> "after" 0
> "before" 1
> "after" 1
> "before" 2
> "process" 2
> "after" 2
> "end" 3
> 3
*/
uj5u.com熱心網友回復:
var printNumTwo;
for (let i = 0; i < 3; i ) {
if (i === 2) {
printNumTwo = function() {
return i;
}
}
}
console.log(printNumTwo());
你已經用 var 在 for 回圈中定義了 i 變數,它有一個函式作用域,因此當 for 回圈運行時,我將增加到 3,然后它將檢查條件并退出 forr 回圈,但它會被分配值 3 i 在全域范圍內,因此要獲得兩個作為輸出,您必須使用 let 定義 i 并且它具有塊范圍,并且在函式運行時將提供最后獲取的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399083.html
標籤:javascript for循环 返回
上一篇:如何使用jQuery通過選擇器上的單擊事件顯示div資料
下一篇:傳遞引數以減少函式
