繁体   English   中英

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

[英]Why declaring an anonymous JavaScript function as a function parameter?

我不明白为什么有些JavaScript框架(例如ember.js)使用匿名函数作为函数参数值。 我会理解该函数是否返回某些东西,但不是。

这是ember.js路由系统的示例代码,演示了我的问题:

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

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

这是因为该功能.map是一个异步功能,而该匿名功能是在.map完成运行的功能。

通常,异步函数如下所示:

function async(callback) {
    //async stuff, yada
    callback();
}

一旦异步操作完成,您将传递该callback以运行

因此,基本上,这创建了一种封装功能的方法,并运行需要的路由设置。 我不是100%熟悉琥珀色,但是我猜他们在初始化路由之前会进行一些设置和检查/验证。 因为您传入了匿名函数,所以它们现在可以将您指定的设置推迟到所有内容都准备好并可以使用为止!

作为参数传入的函数意味着该函数将在外部函数期间(或末尾)运行。 通常,这用于传递回调函数。

例如,map方法可能会做一些事情,然后在完成时调用匿名函数:

function map(function) {
    // Do some stuff
    function();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM