📜  Underscore.js _.binary() 方法(1)

📅  最后修改于: 2023-12-03 15:05:43.156000             🧑  作者: Mango

Underscore.js _.binary() 方法

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。