1. 程式人生 > >javaScript函式立即執行《1》

javaScript函式立即執行《1》

javaScript函式立即執行《1》

函式立即執行,常見兩種寫法:  

  >>> (function(){ })() 

  >>> (function(){ }())

 

函式宣告、函式表示式、匿名函式

  >> 函式宣告:function fnName () {…};使用function關鍵字宣告一個函式,再指定一個函式名,叫函式宣告。

  >> 函式表示式 var fnName = function () {…};使用function關鍵字宣告一個函式,但未給函式命名,最後將匿名函式賦予一個變數,叫函式表示式,這是最常見的函式表示式語法形式。

  >> 匿名函式:function () {}; 使用function關鍵字宣告一個函式,但未給函式命名,所以叫匿名函式,匿名函式屬於函式表示式,匿名函式有很多作用,賦予一個變數則建立函式,賦予一個事件則成為事件處理程式或建立閉包等等。

 

  函式宣告和函式表示式不同之處:

    一、Javascript引擎在解析javascript程式碼時會‘函式宣告提升’(Function declaration Hoisting)當前執行環境(作用域)上的函式宣告,而函式表示式必須等到Javascirtp引擎執行到它所在行時,才會從上而下一行一行地解析函式表示式

    二、函式表示式後面可以加括號立即呼叫該函式,函式宣告不可以,只能以fnName()形式呼叫 。

以下是兩者差別的兩個例子: 

函式宣告:

1 baitang();
2 function baitang() {
3     console.log("公子緣")
4 }
5 /** 正常執行,未報錯.  **/

 

函式表示式:

1 baitang();
2 var baitang = function() {
3     console.log("公子緣")
4 }
5 /** 
6      出現報錯資訊,如下 :
7      testobj.js:1 Uncaught TypeError: baitang is not a function
8 at testobj.js:1 9 **/
1 var baitang = function() {
2     console.log("公子緣")
3 }
4 baitang();
5 /** 正常 執行,未報錯. **/

 

在一個頁面中,引用另外一個js(testobj.js),如果 (function(){ })()  或者 (function(){ }()) ,將會立即執行程式碼。

 

>>> 立即執行函式,引數傳入baitang,看程式碼:

 

  注意:

    程式碼中的物件名稱:baitang ,必須是這個名字,因為在testobj.js程式碼中,小括號裡面傳入的就是baitang,

    testobj.js 程式碼: (funciton(cj){ ... } (baitang))

 

如有問題,歡迎糾正!!!

如有轉載,請標明源處:https://www.cnblogs.com/Charles-Yuan/p/9941695.html