我正在阅读一些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看起来包含许多应用程序的实用程序功能。
最佳答案
bagof()
方法可以用作创建常量函数的工厂(函数始终返回相同的值)。
即使您在这种情况下使用:
var randomFun = bagof(Math.random());
randomFun()
的调用将始终返回相同的值,因为Math.random()
仅被评估一次(急切地)。我猜这是一些API需要某种方法而我们只想传递常量值时使用的实用程序方法。代替:giveMeCallback(function() {return 42})
您可以简单地说:
giveMeCallback(bagof(42))