Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中何时使用currying和partial函数_Javascript_Currying - Fatal编程技术网

在JavaScript中何时使用currying和partial函数

在JavaScript中何时使用currying和partial函数,javascript,currying,Javascript,Currying,我在Dobb博士关于JavaScript中的curry和partial函数的文章中读到了这篇文章。它看起来很有用,但我想知道(作为JavaScript的临时开发人员)是否有经常使用它的标准情况?一个非常常见的场景是在创建事件处理程序时 例如,假设您有一个包含大量链接的文档,例如: <a href="http://someurl.com/example">link</a> 然而,这是更多的代码!大多数咖喱的例子都可以用这种方式“简化”,所以它通常只是一种捷径,尽管很方便。对于初

我在Dobb博士关于JavaScript中的curry和partial函数的文章中读到了这篇文章。它看起来很有用,但我想知道(作为JavaScript的临时开发人员)是否有经常使用它的标准情况?

一个非常常见的场景是在创建事件处理程序时

例如,假设您有一个包含大量链接的文档,例如:
    <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);