📅  最后修改于: 2023-12-03 15:05:43.156000             🧑  作者: Mango
Underscore.js 是一个流行的 JavaScript 工具库,它提供了许多实用程序函数和辅助函数,可以帮助您更轻松地编写 JavaScript 代码。其中一个函数是 _.binary(),它可以将一个函数转换为接受两个参数的函数。
_.binary(func)
参数:
func
:要转换的函数。返回值:一个新函数,该函数接受两个参数。
function sum(a, b, c) {
return a + b + c;
}
let binarySum = _.binary(sum);
console.log(binarySum(1,2));
// 输出: NaN
console.log(binarySum(1,2,3));
// 输出: 6
原始函数sum()
接受三个参数,但我们使用_.binary()
将它转换为一个二进制函数,因此现在只能接受两个参数。当我们尝试执行binarySum(1,2)
时,由于只提供了两个参数,sum()
函数将使用undefined
作为第三个参数,导致结果为NaN
。当我们提供三个参数时,它将按预期工作。
_.binary()可以用于一些需要接收两个参数的函数,例如,使用一些 Array.prototype
方法(例如map和reduce)时,您可能会希望接收两个参数,而不是默认的三个参数(value、index、array)。
let users = [
{name: 'John', age: 25},
{name: 'Jane', age: 30},
{name: 'Bob', age: 20},
];
// 使用 map() 迭代数组时,需要三个参数 [value, index, array]
let mapResult = users.map(function(user, index, array) {
return user.age;
});
console.log(mapResult);
// 输出: [25, 30, 20]
// 使用 _.binary() 转换函数,只需要两个参数 [value, index]
let binaryMap = _.binary(users.map);
let binaryMapResult = binaryMap(function(user, index) {
return user.age;
});
console.log(binaryMapResult);
// 输出: [25, 30, 20]
使用 _.binary() 可以将一个需要三个参数的函数转换为一个只需要两个参数的函数。这在某些情况下非常有用,例如在使用一些 Array.prototype 方法时。需要注意的是,如果转换后的函数需要第三个参数,则它将为 undefined。