這篇文章是怎麼樣的這個帖子的簡化版本:JavaScript for'循環中的執行順序是什麼?
What is the exact order of execution of Javascript's for loop?
我在爲什麼與循環工作時我總是感到困惑超級感興趣。我想知道如何在引擎蓋下執行for循環。
for (let i = 0; i < 10; i++) {
alert(i);
};
從我的理解
所以,這是據我得到的理解在其中執行這樣的命令:)發動機初始化i = 0
2)
1發動機檢查這i < 10
3)發動機彈出持有for語句
圓括號4)引擎執行)循環本次迭代
5)發動機彈回到括號遞增i
內的代碼,
6重複從步驟2.
我想我對第3步最困惑。引擎是否實際彈出'for'循環來執行塊內的代碼?
從我的理解來看,JavaScript是單線程的,只能同步運行,所以我對'for'語句中間的一些問題感到困惑,引擎可以保持'for'在執行塊中的代碼時在內存中執行... 除非'for'循環中的三個條件中的每一個都是它們自己的獨立命令,可以在繼續執行塊中的命令之前執行和完成這些命令。
我甚至不確定如果我正確地問這個問題,我還是比較新的編程,我只知道香草JS在這一點上...下個月是當我進入節點;)
想通了: Click for an image of my breakpoint placement
我已經瞭解到,順序是這樣的: 1)var i
被初始化爲0
2)var i
被檢查truthy
3)如果執行真實的,代碼,
4)一旦執行結束,i
遞增
5)遞增一,i
被檢查truthy
6)重複步驟3 - 5直到i
是虛假的
7)迭代完成。
謝謝大家。 Chrome調試器比我想象的要強大得多!
除了括號中的_pops而是正在轉到下一行_什麼是您的問題? – Lixus
我不知道你是什麼意思的「彈出」。括號只與代碼的語法結構相關,與實際執行的內容無關。 「*'for'循環中的三個條件中的每一個都是它們自己的獨立命令,它們可以被執行*」正好相反。 – Bergi
在這種情況下'i'的範圍在大括號內。順便說一句,如果你使用舊的'var'關鍵字,那麼'i'在周圍的函數或窗口的範圍內,如果'for'循環周圍沒有函數 –