在JavaScript中何时使用currying和partial函数
我在Dobb博士关于JavaScript中的curry和partial函数的文章中读到了这篇文章。它看起来很有用,但我想知道(作为JavaScript的临时开发人员)是否有经常使用它的标准情况?一个非常常见的场景是在创建事件处理程序时 例如,假设您有一个包含大量链接的文档,例如:在JavaScript中何时使用currying和partial函数,javascript,currying,Javascript,Currying,我在Dobb博士关于JavaScript中的curry和partial函数的文章中读到了这篇文章。它看起来很有用,但我想知道(作为JavaScript的临时开发人员)是否有经常使用它的标准情况?一个非常常见的场景是在创建事件处理程序时 例如,假设您有一个包含大量链接的文档,例如: <a href="http://someurl.com/example">link</a> 然而,这是更多的代码!大多数咖喱的例子都可以用这种方式“简化”,所以它通常只是一种捷径,尽管很方便。对于初
<a href="http://someurl.com/example">link</a>
然而,这是更多的代码!大多数咖喱的例子都可以用这种方式“简化”,所以它通常只是一种捷径,尽管很方便。对于初学者,我个人不建议99%的情况下使用咖喱。如果使用不当,它很容易使代码不可读
但是,我可以命名的一些应用程序将与设置函数上下文相关联。例如,当您第一次使用上下文(窗口对象等以外的对象)执行currying函数时,您可以拥有一个函数,该函数在以后调用时对原始对象的属性等应用某些计算
第二种情况是,例如,您有一个接受三个参数的函数。DOM元素、属性名及其值。这可以转化为一个currying函数,您可以使用适当的元素启动它,然后接下来的每次执行都会将一个属性设置为您希望的值。在属性依赖于许多条件的情况下可能很有用。感谢您提供了详细的代码,进一步探讨了这项技术。curry来自函数式编程。当您想要应用函数组合时,请使用它。部分应用程序是命令式编程的一部分,其中存在多参数函数。当您想要专门化函数或方法时,可以使用它。
var links = document.getElementsByTagName("a"), len = links.length;
for (var n = 0; n < len; ++n) {
links[n].onclick = window.alert.bind(null, "You are now going to: " + links[n].innerText);
}
links[n].onclick = (function(text) {
return function() { window.alert(text); };
})("You are now going to: " + link[n].innerText);