【发布时间】:2014-07-27 19:48:46
【问题描述】:
我在各种博客文章中看到过这样编写的 Javascript 的 sn-ps,但我很难理解参数在传递到匿名函数时所具有的属性的概念。
对于下面给出的示例:
var http = {
bananas: function(context) {
var object = {
saySomething: function (msg) {
console.log(msg);
}
};
return context(object);
}
}
http.bananas(function (something) {
something.saySomething("I like bananas!");
});
“I like bananas!”是从这里返回的,但我不明白为什么香蕉匿名函数中的“context”参数可以这样做:
return context(object);
参数传递给匿名函数时是否有特殊属性?
如果我像这样向香蕉函数添加一个额外的参数怎么办:
bananas: function(context,string){........}
然后试试这个:
return string(object);
我得到一个错误?
【问题讨论】:
-
查找有关“高阶函数”的信息,并了解函数对象和函数调用之间的区别。
-
context应该是一个函数,而您正在那里传递一个函数:http.bananas(function (...) { ... });。如果您使用任何其他值调用该方法,例如http.bananas(4),它将不起作用。这里没有魔法。函数就像任何其他值一样。 -
Line
return context(object)期望context参数应该是一个函数,这只是你的代码行为
标签: javascript closures