2015-07-20 82 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

相关问题