JavaScript 閉包與匿名函數
在JavaScript 中,當內部函數可以存取外部作用域的變數時,即使在外部函數已完成執行。 JavaScript 中的許多函數都被視為閉包,但理論上只有特定子集特別令人感興趣。
案例 1:朋友的程式碼
<code class="js">(function f() { var i2 = i; setTimeout(function g() { console.log(i2); }, 1000); })();</code>
情況 2:您的程式碼
<code class="js">setTimeout((function f(i2) { return function g() { console.log(i2); }; })(i), 1000);</code>
結論
因此,在提供的兩個解決方案中,內部函數 g 是一個閉包,但不是外部的。這表明雖然它們達到了相同的結果,但它們是透過不同的機制實現的。
以上是JavaScript 中的內部函數總是閉包嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!