如果我想打破一个方法的参数足迹中的回调实现,我可以做更干净的代码(例如)
foo.bar(a, callback(), b);
function callback() {
stuff;
}
而不是
foo.bar(a, function() {
stuff;
}, b);
但是,如果方法将一些内容传递给回调函数,例如three.js的加载程序函数,我该怎么办? (http://threejs.org/docs/#Reference/Loaders/OBJMTLLoader)
foo.bar(callback(object));
function callback(object) {
object.stuff();
}
似乎不起作用。
答案 0 :(得分:0)
知道了。格式应为:
foo.bar(callback);
function callback(object) {
object.stuff();
}
答案 1 :(得分:0)
您发布的2个片段实际上是不同的 - 当您将匿名函数作为参数传递时,它不会立即运行,而是在“foo.bar”函数本身中运行。但是,当您将其作为“callback()”传递时,该函数立即运行(在某些情况下它很有用,例如:如果函数返回另一个函数)。所以,传递它没有“()”。
例如:
function a(){
alert(1);
}
function b(callback){
callback(); //run the callback function.
}
b(a);
而且,如果你想看到第二个选项的例子:
function a(){
return function() {
alert(1);
};
}
a()(); //Alert
b(a()); //Alert
b(a) //nothing happens