關於函式的一個小觀念

今天在看別人部落格時發現一個很容易讓人搞不清楚的函式應用方式,

所以我就順道寫了一下,

建立函式的方法有幾種,函式實字就是一種常見的方法。

var a=function(){

return 5201314;

}

好吧!這裡其實先不管函示怎麼建立的XD",我想說的是關於 a 與 a()的差別。

首先要知道的事是,函式是一個物件,跟一般物件一樣它可以有自己的屬性與方法,唯一特別的是,他是一個可以被呼叫執行的物件。

當函式加上小括號()時,代表著程式是要呼叫並執行該函式。

如果只是單純的函式名卻沒括號,它代表著函式物件。

如果常看人家的函式庫就會看到類似這樣的寫法:

(function(){...})()

這是一種立即執行的函式寫法,他沒有函式名,但後面那個小括號會讓他立即執行該函式。

所以再來看看下面這兩行的差別:

x(a);

x(a());

第一個x(a)代表著把a當成型態為函式物件的參數傳遞給x(),通常a被當成一個回呼函式,在x()函式的內部呼叫。

而x(a());代表著,把呼叫a()函式執行完後的傳回值,當成參數傳遞給x()函式。

其實很簡單,但是在看一大串程式碼時,會搞亂@@"

 
 

  按個讚!~支持本站!~

FB推薦載入中  

你可能會有興趣的文章