为什么将匿名JavaScript函数声明为函数参数?

时间:2014-03-07 17:58:18

标签: javascript web ember.js

我不明白为什么像ember.js这样的JavaScript框架使用匿名函数作为函数参数值。我会理解函数是否返回了某些东西,但事实并非如此。

以下是ember.js路由系统的示例代码,用于演示我的问题:

App.Router.map(function() {
  this.route("about", { path: "/about" });
  this.route("favorites", { path: "/favs" });
});

请解释一下为什么这段代码会创建一个匿名函数作为参数。

3 个答案:

答案 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();
}