在以下代码片段中,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