我不认为我已经讨好了.我理解它的作用,以及如何做到这一点.我想不出我会用它的情况.
你在JavaScript中使用currying(或者使用它的主要库在哪里)?欢迎DOM操作或一般应用程序开发示例.
其中一个答案提到了动画.函数如slideUp,fadeIn将元素作为参数,通常是一个curried函数,返回高阶函数,内置默认的"动画函数".为什么这比仅使用某些默认值更高的函数更好?
使用它有什么缺点吗?
根据要求,这里有一些关于JavaScript currying的好资源:
我会在评论中添加更多内容.
因此,根据答案,currying和部分应用一般是便利技术.
如果您经常通过使用相同配置调用高级函数来"精炼"高级函数,则可以使用更高级别的函数来设置(或使用Resig的部分)来创建简单,简洁的帮助器方法.
我正在通过这个网站学习 JavaScript 。该链接指向我现在正在阅读的特定章节。
在书中,作者讨论了将模块的实现细节保留在本地范围内。他通过以下方式实现了这一目标:
var dayName = function() {
var names = ["Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"];
return function(number) {
return names[number];
};
}();
Run Code Online (Sandbox Code Playgroud)
我明白这是如何运作的,但我不明白他为什么这样做。他为什么不直接做...
function dayName(number) {
var names = ["Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"];
return names[number];
}
Run Code Online (Sandbox Code Playgroud)
...对我来说,这看起来是一个更干净、更易读的代码?考虑到他的目标是保持names在本地范围内,创建嵌套 lambda 似乎是多余的。
在这种情况下使用嵌套函数有什么真正的优势吗?或者他只是将其用于教育目的?
谢谢!
阅读一些遗留代码,并找到了
A.prototype.setSize: function () {
var v1 = new Vector2();
return function (size ) {
var halfSize = v1.copy( size ).multiplyScalar( 0.5 );
this.min.sub( halfSize );
return this;
};
}(),
Run Code Online (Sandbox Code Playgroud)
我想知道:
这有什么亮点吗?
更新:
我可以简单地使用
A.prototype.setSize: function (size) {
var v1 = new Vector2();
var halfSize = v1.copy( size ).multiplyScalar( 0.5 );
this.min.sub( halfSize );
return this;
},
Run Code Online (Sandbox Code Playgroud)
第一个片段比第二个好吗?