我正在阅读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看起来它包含许多应用程序的实用程序函数。
答案 0 :(得分:4)
bagof()
方法可以用作创建常量函数的工厂(函数总是返回相同的值)。
即使您在这样的环境中使用:
var randomFun = bagof(Math.random());
randomFun()
的调用将始终返回相同的值,因为Math.random()
仅评估一次(急切地)。我想这是一些API需要一个方法时使用的实用方法,我们只想传递常量值。而不是:
giveMeCallback(function() {return 42})
你可以简单地说:
giveMeCallback(bagof(42))