[英]JavaScript Closure: Returning a Function
我正在通過Douglas Crockford編寫的JavaScript講座系列進行工作。 我為他展示的“封閉”示例代碼感到困惑:
var digit_name = (function () { var names = ['zero', 'one', 'two', 'three']; return function (n) { return names[n]; }; }()); alert(digit_name(3));
當定義中未指定任何參數時(最外面的功能), digit_name
如何接受參數? 參數(在這種情況下為3
)如何在調用過程中知道與內部函數定義中的n
對應?
有一個自調用的匿名函數(function(){})()。 所以digit_name不是函數,函數輸出的是return語句,所以這發生在瀏覽器內部:
var digit_name=(function(){})();
var digit_name=function(n){}
外部函數是IIFE,即立即調用的函數表達式。 該函數在腳本啟動時運行,因此IIFE返回的內部函數就是分配給digit_name的函數。
閉包的“魔力”,如果此內部函數仍然可以訪問閉包中的所有內容(例如names數組)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.