2015-10-10 21 views
0

這些代碼是如何工作的?'function1(data,function2)'是如何工作的?

function output(a) { 
    console.log("The function filter return " + a + "!"); 
} 

x = function(data, fun) { 
    a = data; 
    fun(a); 
}; 

theInput = " TEXT FROM INPUT "; 

x(theInput, output);//The function filter return TEXT FROM INPUT ! 

我寫了mysels,它工作正常。但我不明白'function1(data,function2)'是如何運行的。

+1

閱讀關於JavaScript關閉。 – misko321

+1

這裏沒有關閉閉包,函數'output'被傳遞給'x'並且該函數從'x'中被調用,讀** 1 **函數表達式** 2。**函數:第一類對象** 3。**回調函數 – Tushar

+0

Jepp,這裏沒有關閉! – Sun

回答

2

什麼是x

它是保持與兩個參數,datafun一個參照本發明的函數的變量。

你在這做什麼?

x(theInput, output); 

你調用這個函數傳遞一個字符串和功能。是的,JavaScript中的函數可以被視爲任何其他對象。實際上,它們也是對象。所以它們可以存儲到變量(存儲對它們的引用)中,它們可以作爲參數傳遞給另一個函數等。

存儲在x中的函數體內發生了什麼?

最初,你分配給data稱爲a的變量,然後,你將這個作爲參數傳遞給函數output。然後調用存儲在output中的函數。

如果從這段代碼中得到一個代碼片段,事實上你將一個函數作爲參數傳遞給另一個函數。這在JavaScript中非常重要,它與JavaScript中的函數性質相關。

根據MDN

在JavaScript中,函數是第一類對象,即,它們是 對象,並且可以進行操作和通過周圍,就像任何其他 對象。具體而言,它們是Function對象。