这个功能在Facebook的JavaScript源代码中起什么作用?

时间:2012-04-19 19:46:26

标签: javascript

我正在阅读Facebook的一些JavaScript,并且遇到了一个奇怪的功能,我无法弄清楚它的目的:

function bagof(a) {
    return function () {
        return a;
    };
}

据我所知

  • bagof是一个接受参数a的函数。
  • bagof会立即返回匿名函数。
  • 返回的函数然后返回原始参数a

我认为bagof的用法是这样的:

newFunction = bagof("This is the data");
​console.log( newFunction() );​ //Logs "This is the data"​​​​​​​​​​​​

重点是什么?为什么不直接使用或存储传递给a的任何变量或函数?

The source file看起来它包含许多应用程序的实用程序函数。

1 个答案:

答案 0 :(得分:4)

bagof()方法可以用作创建常量函数的工厂(函数总是返回相同的值)。

即使您在这样的环境中使用:

var randomFun = bagof(Math.random());

randomFun()的调用将始终返回相同的值,因为Math.random()仅评估一次(急切地)。我想这是一些API需要一个方法时使用的实用方法,我们只想传递常量值。而不是:

giveMeCallback(function() {return 42})
你可以简单地说:

giveMeCallback(bagof(42))