在以下代碼片段中,addHorizonLoadEvent(function() {...})
是什麼意思?functionName(function(){...})在JavaScript中做什麼?
addHorizonLoadEvent(function() {
show_hide_datepickers();
});
在以下代碼片段中,addHorizonLoadEvent(function() {...})
是什麼意思?functionName(function(){...})在JavaScript中做什麼?
addHorizonLoadEvent(function() {
show_hide_datepickers();
});
addHorizonLoadEvent
是高階函數 - 這意味着它並不指望非函數的值(如數字,或字符串),因爲它的說法,但另一個功能。所以第一個參數是一個新的函數,它會在某個時候被原始函數調用(通常在末尾,作爲回調)。
function() {...}
是匿名函數 - 一種方式來表達的功能,而不它結合爲名稱。
實際上你給了一個函數作爲addHorizonLoadEvent的參數。
你可以這樣做:
var fooBar = function() {
//alert("Alert2");
show_hide_datepickers();
});
addHorizonLoadEvent(fooBar);
你給addHorizonLoadEvent函數參數將被用來只有一次,沒有必要給它起一個名字,所以它是一個匿名函數,直接聲明在()中。
這種模式被稱爲匿名函數。
function_name(function() {
// Code
});
是一樣的書寫
function my_function() {
// Code
}
function_name(my_function);
意思就是說my_function
被作爲參數傳遞給函數function_name
通過。
* *與* *相似,但不是*「相同」。我已經鏈接了一些相關的問題。 – user2864740
它是一個匿名函數 – OptimusCrime
[addHorizonLoadEvent(https://github.com/openstack/horizon/blob/65db6d33aa40a202cd16ad60e08273f715a67745/horizon/templates/horizon/client_side/_script_loader.html):_」補充,使我們可以追加Horizon將範圍內的JS事件添加到DOM加載事件,而不會運行到「水平線」名稱空間,因爲我們將腳本加載到頁面底部,因此目前尚未定義它。「_ – Andreas
[Explain JavaScript's encapsulated anonymous function syntax] (http://stackoverflow.com/questions/1634268/explain-javascripts-encapsulated-anonymous-function-syntax) – user2864740