定義並立即執行匿名函數的用法

紅皮書上有一個例子

            function createFunctions(){
                var result = new Array();
                for (var i=0; i < 10; i++){
                    result[i] = function(n){return function(){return n;};}(i);   
                }
                return result;
            }
            var funcs = createFunctions();
            //every function outputs 10
            for (var i=0; i < funcs.length; i++){
                document.write(funcs[i]() + "<br />");
            }

想看看匿名函數的替代寫法,於是嘗試修改,變換一種寫法,發現得到了一樣的結果。

            function createFunctions(){
                var result = new Array();
                for (var i=0; i < 10; i++){
                    result[i] = subFunc(i);//function(n){return function(){return n;};}(i);   
                }
                return result;
            }
            function subFunc(n){
                return function(){
                    return n;
                }
            }            
            var funcs = createFunctions();
            alert(funcs);
            //every function outputs 10
            for (var i=0; i < funcs.length; i++){
                document.write(funcs[i]() + "<br />");
            }
這說明,
result[i]=function(n){return function(){returnn;};}(i); 相當於
result[i]=subFunc(i); function subFunc(n){return function(){ return n;} } 

像第一個例子這樣就是定義匿名函數並立即執行的用法啦。

發現有好多種寫法可以定義並且立即執行匿名函數,現羅列於下方,供日後備用。
1  (function(){alert("hi!")})();
2 (function(){alert("hi!")}).call();
3 (function(){alert("hi!")}).apply()
4  var func=function(){alert("hi!")}();
5 var func=function(){alert("hi!")}.call();
6 var func=function(){alert("hi!")}.apply()
 


發佈了98 篇原創文章 · 獲贊 3 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章