将两个参数传递给 .map 回调函数
Passing two arguments to the .map callback function
R代表Ramda.js库,类似于Underscore.js
var test = [
{p1: 1}
];
var get = R.curry(function(prop, obj) { return obj[prop]; });
console.log(R.map(get('p1'), test));
我对 R.map 回调的了解是它只需要一个参数,但在这里我们传递了两个参数 prop, obj 并且它正在工作?
we didn't use obj so it should be undefined --> return undefined[prop]
right ?
这段代码证明 map 回调只接受一个参数
var test = [
{p1: 1}
];
function fn(arg1, arg2) {
return arg1 + ' ' + arg2 + '\n';
}
console.log(R.map(fn, test));
结果是
["[object Object] undefined"]
之所以有效,是因为 get
是柯里化函数。这意味着 get('p1')
returns 一个接受一个参数的函数。在这种情况下,它 returns 像这样的函数:
function(obj) { return obj['p1']; });
这允许将其传递给 R.map
函数。
要了解柯里化,维基百科文章相当出色:https://en.wikipedia.org/wiki/Currying
R代表Ramda.js库,类似于Underscore.js
var test = [
{p1: 1}
];
var get = R.curry(function(prop, obj) { return obj[prop]; });
console.log(R.map(get('p1'), test));
我对 R.map 回调的了解是它只需要一个参数,但在这里我们传递了两个参数 prop, obj 并且它正在工作?
we didn't use obj so it should be undefined --> return undefined[prop] right ?
这段代码证明 map 回调只接受一个参数
var test = [
{p1: 1}
];
function fn(arg1, arg2) {
return arg1 + ' ' + arg2 + '\n';
}
console.log(R.map(fn, test));
结果是
["[object Object] undefined"]
之所以有效,是因为 get
是柯里化函数。这意味着 get('p1')
returns 一个接受一个参数的函数。在这种情况下,它 returns 像这样的函数:
function(obj) { return obj['p1']; });
这允许将其传递给 R.map
函数。
要了解柯里化,维基百科文章相当出色:https://en.wikipedia.org/wiki/Currying