2018.9.13日記

1.立即執行函數 

https://blog.csdn.net/qq_34391038/article/details/52318356 

 getajax = (function(){

        alert("hello");

        function dosomething(){

            alert("world");

        }

        return {do : dosomething};

    })();//此處函數已經執行完畢,所以getajax是返回值,而不是函數

    getajax.do();//此處執行dosomething函數


前文講到如何在聲明函數後立即執行函數,那麼如何如果要向聲明的函數傳遞參數要怎麼辦呢,

(function(param) {
    alert(param);})("hello");123

只需要在括號中傳入相應的參數即可。 
在js中,參數不僅可以是string,還可以是對象,於是

(function($){...})(jQuery);123

這個方法將jQuery對象作爲參數傳入函數,而jQuerynoconflict使是函數的形參,其作用類似於jQuery的noconflict方法,可以在方法內部使用,防止與其它js類庫衝突。 
還可以更進一步,使用函數作爲函數的參數

(function(factory){
    factory("hello");})(function(para){
    alert(para);
    });12345

此處將匿名函數 
function(para){alert(para);} 
作爲參數傳入第一個函數,factory是形參,而匿名函數是實參,在第一個函數內部再次調用匿名函數。所以我們也可以這樣

(function(factory){
    factory(jQuery);
    })(function($){...})123

這樣,可以在第一個匿名函數內將jQuery傳入第二個匿名函數,而在第二個函數內部使用,而且這個用法可以根據需要爲傳入不同的實參,可以是jQuery,也可以是其它的prototype等。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章