如何使用下划线_为parseInt()创建部分函数

时间:2014-03-04 01:49:51

标签: javascript underscore.js

使用下划线,我想为parseInt创建partial function,以便使用map时基数始终为10。

我希望以下方法有效,但不会:

var parseInt10 = _.partial(parseInt, _, 10); 

docs似乎表示可以使用_作为占位符来跳过稍后在_.partial中指定的参数:

  

_.partial(function,* arguments)

     

通过填写任意数量的参数来部分应用函数,   没有改变它的动态这个值。近亲的近亲。您   可以在您的参数列表中传递_以指定参数   不应预先填写,但在通话时保持开放状态。

测试

_.map([_, '_', undefined, null], function(x) { return _.partial(function(){ return arguments }, x, 10)('123'); })

使用_.partial(function(){ return arguments }, x, 10)('123')并将x替换为_"_"undefinednull,我发现所有这些值都已通过按预期直接改变。我认为传递_意味着不会直接使用它。

我完全清楚我能做到这样的事情:

var parseInt10 = function(n) { return parseInt(n, 10); };

然而,下划线的文档似乎暗示可以使用_.partial让我想知道我做错了什么。

那么,我是否解释了下划线文档错误,或者没有处理跳过参数的特殊值?

1 个答案:

答案 0 :(得分:5)

我刚决定查看source code,它似乎是_.partial was added recently的占位符功能。使用下划线文档页面上的JS控制台,它可以工作!

var parseInt10 = _.partial(parseInt, _, 10);

猜猜我只需要升级到最新版本。

(对于所有撰写未来文档的人来说,最好使用类似于jQuery或Django文档的版本号来内联更改注释,或者至少使其显示更加引人注目的版本)