首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bind与_.curry的区别

bind与_.curry的区别
EN

Software Engineering用户
提问于 2015-07-20 18:04:12
回答 1查看 1.6K关注 0票数 2

因此,JavaScript的bind支持赛跑,但大多数人使用其他库(如lodashramda )来进行赛跑。

从第一印象来看,bind似乎支持上下文更改,因为这是它的预定角色。

代码语言:javascript
复制
var replaceTest = replace.bind(this, 'test')

replaceTest('beta', environments)

其他的咖喱方法没有这个。

代码语言:javascript
复制
var replace = _.curry(function (a, b, list) {
  // implementation
})
var replaceTest = replace('test')

replaceTest('beta', environments)

那么,这两种方法还有什么区别吗?我主要想知道,当存在一个本机实现时,使用这些实现之一是否有意义。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2015-07-20 18:34:55

bind()实际上不做赛跑。它所做的是部分应用。lodash和rambda有一个名为_.partial()的方法,它在不设置上下文对象的情况下执行部分应用程序。

如果用一个或多个参数调用f等于用一个参数调用f,然后用下一个参数调用返回值,那么函数f就会被匆忙处理,以此类推,直到参数用完为止。运行可以通过部分应用程序来实现,但这是另一回事。

如果您真的想要一个咖喱函数,最好使用这些库中的一个,而不是使用自己的库。如果您想要的只是部分应用程序,那么bind()应该足够好,但是如果您已经使用了一个库,如lodash或rambda,我会考虑使用_.partial()。另外,值得注意的是,对各种函数来说,运行并不是很好。

P.S. 这篇博文解释得更好。.

票数 5
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/290242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档