我不明白为什么像ember.js这样的JavaScript框架使用匿名函数作为函数参数值。我会理解函数是否返回了某些东西,但事实并非如此。
以下是ember.js路由系统的示例代码,用于演示我的问题:
App.Router.map(function() {
this.route("about", { path: "/about" });
this.route("favorites", { path: "/favs" });
});
请解释一下为什么这段代码会创建一个匿名函数作为参数。
答案 0 :(得分:3)
这是因为函数.map
是一个异步函数,而匿名函数是 AFTER .map
完成后运行的函数。
通常异步函数如下所示:
function async(callback) {
//async stuff, yada
callback();
}
callback
是您在异步操作完成后传入的内容
答案 1 :(得分:0)
所以基本上这会创建一种封装功能的方法,并运行他们需要的路由设置。我不是百分之百熟悉琥珀,但我的猜测是他们在初始化路线之前做了一些设置和检查/验证。因为您传入了匿名函数,所以他们现在可以推迟您指定的设置,直到所有内容都已设置并准备就绪!
答案 2 :(得分:0)
作为参数传入的函数意味着函数将在外部函数期间(或结束时)的某个点运行。通常这用于传递回调函数。
例如,map方法可能会执行一些操作,然后在完成后调用匿名函数:
function map(function) {
// Do some stuff
function();
}