函数是 javascript 中的对象,因此可以将它们分配给变量并像任何其他值一样传递。最终他们可以被处决。
这里发生的是myFunction
返回一个函数,然后当然可以执行该函数。
让我简化您的示例:
// function that returns a function.
var foo = function() {
// declare a function, but don't run it right now.
var fn = function() {
return "bar";
};
// return the function object.
return fn;
}
var someFn = foo(); // function object is returned from foo()
someFn(); // "bar" is returned
// Which means you could also do this!
// the first () executes foo, second () executes the function returned by foo()
foo()() // "bar" is returned
在此示例中,foo()
返回一个函数。该函数被保存到局部变量中someFn
,然后执行。
返回函数的函数有时会让你头疼,但它是 javascript 最强大的功能之一,因为它允许你做一些非常棘手的事情。