📌  相关文章
📜  如何在 JavaScript 中创建一个调用带有部分前置参数的函数的函数?

📅  最后修改于: 2022-05-13 01:56:45.050000             🧑  作者: Mango

如何在 JavaScript 中创建一个调用带有部分前置参数的函数的函数?

在本文中,我们将看到如何创建一个函数,该函数调用在 JavaScript 中接收的参数前附加部分函数的函数。在理解问题陈述并找到解决方案之前,首先让我们了解什么是函数(也称为方法)以及函数是如何执行的。

函数(或方法)是执行特定任务的函数块。可以在程序内多次调用函数来执行该特定任务。将大段代码分成小段代码,不仅增加了代码的可读性,还有助于开发人员在代码的特定部分找到错误。这使得程序更干净,更真实。基本上,为了多次执行特定任务,我们可以在单独的函数(方法)中编写逻辑部分,并且可以在程序中需要时使用该函数。

有很多方法可以创建一个简单的函数(方法),例如使用函数关键字或创建箭头函数,两种情况下的语法会略有不同,但最终结果将保持不变。以下是我们可以声明我们的函数(方法)并进一步执行它的语法 -

Javascript
function displayName (name) {
    return name;
}
console.log(displayName("GeeksforGeeks"));


Javascript
let displayName = (name) =>{
    return name;
}
console.log(displayName("GeeksforGeeks"));


Javascript
function partial(fn, ...partials) {
  return function (...args) {
    return fn(...partials, ...args);
  };
}
  
function greet(greeting, name) {
  return greeting + " " + name;
}
  
let greetMessage = partial(greet, "Hello");
  
console.log(greetMessage("GeeksforGeeks"));


Javascript
let partialFunction = (fn, ...partials) => (
    ...args) => fn(...partials, ...args);
  
let greet = (greeting, name) => greeting + " " + name;
  
let greetMessage = partialFunction(greet, "Hello");
  
console.log(greetMessage("GeeksforGeeks"));


上述代码的输出如下 -

GeeksforGeeks

我们可以使用以下语法以箭头函数(ES6 版本格式)的形式声明我们的方法或函数——

Javascript

let displayName = (name) =>{
    return name;
}
console.log(displayName("GeeksforGeeks"));

上述代码的输出如下 -

GeeksforGeeks

现在让我们理解问题陈述,我们也需要找出细节。以下图形表示描述了问题陈述 -

我们需要创建一个函数,该函数负责调用另一个函数,该函数由几个附加到其中的参数的部分(内容)组成。因此,用户使用主函数来显示结果,该结果将间接使用包含信息的另一个函数。既然我们已经理解了问题陈述,那么我们将进一步进行。我们现在将看到解决这个特定问题的不同方法。

以下是我们可以轻松解决问题的方法-

方法一:

  • 这种方法是第一种基本方法,也是本机方法。
  • 在这里,我们将创建几个我们需要的函数来执行我们的问题陈述并获得我们的结果。
  • 我们将使用我们在 JavaScript 中用于任何函数创建的“ 函数 ”关键字来创建一个函数。
  • 最终,我们将返回嵌套函数的结果,以便将其存储到主函数中。
  • 首先,我们将创建一个名为 partial 的主函数,该函数将在其参数列表中包含另一个函数,此外,我们将使用其余运算符“...”以及一个变量,该变量将指示与函数一起使用可以在偏函数中传递不确定的参数列表。
  • 之后,在该部分函数中,我们将返回一个匿名函数,该函数将再次包含一个 rest运算符以及“args”变量,这表明可以轻松接受不定参数。
  • 此外,我们将返回在名为 partial 的主函数中传递的名为“fn”的函数,该函数最终将返回带有两个变量的 rest运算符,这些变量最终将接受一个不确定的参数列表。
  • 之后,我们将通过创建另一个函数以方便我们使用上面声明的函数,该函数将接受两个参数名称 greeting 和 name 将由用户自己传递。
  • 然后我们将我们的结果存储在一个名为 greetMessage 的变量中,其中我们将传递我们的 main 方法以及静态问候消息,此外,在控制台上打印结果时将传递名称。

Javascript

function partial(fn, ...partials) {
  return function (...args) {
    return fn(...partials, ...args);
  };
}
  
function greet(greeting, name) {
  return greeting + " " + name;
}
  
let greetMessage = partial(greet, "Hello");
  
console.log(greetMessage("GeeksforGeeks"));

上述代码片段的输出如下 -

Hello GeeksforGeeks

方法二:

  • 第二种方法是一种更好的方法,也是最简单的方法。
  • 在此,我们将使用箭头函数(JavaScript 的 ES6 特性)。
  • 我们将创建一个主函数,在该主函数中,我们将传入几个其他箭头函数,以便在存储到主函数的中间嵌套函数中执行结果。
  • 我们将一个接一个地创建箭头函数。最后,我们将创建一个变量来存储我们的结果,因此,在该特定变量的帮助下,我们将在控制台上获得我们的结果。
  • 第一种方法中描述的步骤将保持完全相同,并且在这种方法中唯一会改变的只是在这里使用箭头函数,这将使我们的代码看起来更短,更易读和易于理解。

Javascript

let partialFunction = (fn, ...partials) => (
    ...args) => fn(...partials, ...args);
  
let greet = (greeting, name) => greeting + " " + name;
  
let greetMessage = partialFunction(greet, "Hello");
  
console.log(greetMessage("GeeksforGeeks"));

上述代码片段的输出如下 -

Hello GeeksforGeeks