js自執行函式 擴充套件方法

2022-03-17 07:51:01 字數 1208 閱讀 8793

我們通常將js**寫在乙個單獨的js檔案中,然後在頁面中引入該檔案。但是,有時候引入後會碰到變數名或函式名與其它js**衝突的問題。那麼如何解決這個問題呢?作用域隔離。在js中,作用域是通過函式來劃分的,

將js**封裝到函式中進行呼叫可以避免變數名/函式名衝突的問題,但是這也並不是萬無一失,因為封裝函式本身有可能和其它函式重名,解決方案:自執行函式。

自執行函式是用一對圓括號將匿名函式包起來,加括號(傳參)會立即執行。因為函式無名字,實現了作用域的絕對隔離和函式名的衝突問題。基本形式如下:

(function () )();

比如我們在custome.js檔案中寫了一些js邏輯,並封裝到函式init中。我們用自執行函式將自己定義的函式init包起來,就像下面這樣。

(function () 

init();

})();

當我們在html中引入custome.js:,自執行函式會立即執行,進而執行內部定義的init函式;

不過,自執行函式立即執行的特性,使其很難呼叫。通過定義jquery擴充套件方法,可以解決這一問題,拿到自執行函式呼叫和執行的主動權。

jquery擴充套件方法的基本形式:

$.fn.extend(

});

通過如上方式定義的擴充套件方法,需要通過jquery選擇器呼叫,比如通過標籤選擇器$("button").mymethod(args)

示例:

(function () 

$.extend(

})})();

呼叫:

<

script

src="jquery-3.2.1.js"

>

script

>

<

script

src="custome.js"

>

script

>

<

script

>

$(function

() );

script

>

在頁面載入完成後,通過呼叫$.memethod()jquery.mymethod()來執行init函式

JS自執行函式

函式表示式立即執行 函式宣告想要立即執行,會報錯 按照上面的分析,我們如果在第乙個 前面加上函式名稱,在第二個 裡面加入表示式,那麼就不會報錯了,我們來看一下效果 改掉語法錯誤以後的函式宣告 可以看到修改了那兩處的問題以後,報錯消失了,但是這個時候函式並沒有執行,原因上面也已經提到了,就是一旦被當作...

js自執行函式

方式1 最前最後加括號 function 方式2 function外面加括號 function 方式3 function前面加運算子 function 注 1 可以給立即執行函式傳遞引數 2 立即函式內部是可以訪問外部變數 3 立即執行函式模式被廣泛使用,它可以幫你封裝大量的工作而不會在背後遺留任何...

js匿名自執行函式

匿名自執行函式 沒有方法名的函式 閉包 閉包是指有權訪問另乙個函式作用域變數的函式 通過乙個例項來解釋 從網上找到了乙個案例,使用了for迴圈 匿名自執行函式 settimeout。案例1 var value1 0,value2 0,value3 0 for var i 1 i 2 i 1 sett...