2015-07-20 73 views
1

在以下代碼片段中,addHorizonLoadEvent(function() {...})是什麼意思?functionName(function(){...})在JavaScript中做什麼?

addHorizonLoadEvent(function() { 
    show_hide_datepickers(); 
}); 
+1

它是一個匿名函數 – OptimusCrime

+1

[addHorizo​​nLoadEvent(https://github.com/openstack/horizo​​n/blob/65db6d33aa40a202cd16ad60e08273f715a67745/horizo​​n/templates/horizo​​n/client_side/_script_loader.html):_」補充,使我們可以追加Horizo​​n將範圍內的JS事件添加到DOM加載事件,而不會運行到「水平線」名稱空間,因爲我們將腳本加載到頁面底部,因此目前尚未定義它。「_ – Andreas

+2

[Explain JavaScript's encapsulated anonymous function syntax] (http://stackoverflow.com/questions/1634268/explain-javascripts-encapsulated-anonymous-function-syntax) – user2864740

回答

5

addHorizonLoadEvent高階函數 - 這意味着它並不指望非函數的值(如數字,或字符串),因爲它的說法,但另一個功能。所以第一個參數是一個新的函數,它會在某個時候被原始函數調用(通常在末尾,作爲回調)。

function() {...}匿名函數 - 一種方式來表達的功能,而不它結合爲名稱。

1

實際上你給了一個函數作爲addHorizo​​nLoadEvent的參數。

你可以這樣做:

var fooBar = function() { 
    //alert("Alert2"); 
    show_hide_datepickers(); 
}); 

addHorizonLoadEvent(fooBar); 

你給addHorizo​​nLoadEvent函數參數將被用來只有一次,沒有必要給它起一個名字,所以它是一個匿名函數,直接聲明在()中。

1

這種模式被稱爲匿名函數。

function_name(function() { 
    // Code 
}); 

是一樣的書寫

function my_function() { 
    // Code 
} 
function_name(my_function); 

意思就是說my_function被作爲參數傳遞給函數function_name通過。

+0

* *與* *相似,但不是*「相同」。我已經鏈接了一些相關的問題。 – user2864740

相關問題