let printNumTwo;
for (let i = 0; i < 3; i ) {
if (i === 2) {
printNumTwo = function() {
return i;
};
}
}
console.log(printNumTwo());
輸出:2
這個輸出怎么變成2了;解釋 let 的回圈和范圍內發生了什么。
uj5u.com熱心網友回復:
這僅僅是因為只有當計數器等于時才等待printNumTwo變數保存回傳i (i==2)值的函式,否則不執行任何操作。對于計數器的所有其他值,將不會被觸及。這是主要原因。i2iprintNumTwo
uj5u.com熱心網友回復:
好吧,基本上它是回圈的,而i是它用簡單的話回圈的次數。所以在你的情況下,我從 0 開始到 3,這意味著它將回圈 3 次。你在里面做了一個 if 陳述句:
if (i === 2) {//do stuff}
它基本上只是檢查如果i是 2 - 或者它是第二個回圈,它將運行。因此,當它是第二個回圈時,它會通過您撰寫的代碼控制臺記錄2 :
printNumTwo = function() {
return i;
};
然后printNumTwo被控制臺記錄(printNumTwo 是i或 2)。我希望這是有道理的。
uj5u.com熱心網友回復:
因為此代碼i在等于2并通過呼叫printNumTwo()函式時回傳,所以它也回傳2,因為代碼通過回傳它停止了回圈。
uj5u.com熱心網友回復:
因為您使用帶有迭代器變數的 for 回圈,該迭代器變數遞增其值并停止,直到滿足其停止條件。您的全域范圍變數具有回傳函式的值,該函式回傳迭代器值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/427815.html
標籤:javascript 范围 变量 让
