欢迎光临
我们一直在努力

如何在 JavaScript 中调用带有附加到参数的部分的函数?

如何在 javascript 中调用带有附加到参数的部分的函数?

在 JavaScript 中,可以通过向函数传递参数来调用函数。但是,有时需要调用已填充一些参数的函数。这可以使用称为部分函数应用的技术来完成。

什么是部分函数应用?

部分函数应用是一种通过“预填充”现有函数的一些参数来创建新函数的方法。当您想要创建一个与现有函数类似但已设置一些参数的新函数时,这非常有用。

例如,假设您有一个计算矩形面积的函数。该函数有两个参数 – 矩形的宽度和高度。

现在假设您要创建一个新函数来计算正方形的面积。这个新函数将与现有函数类似,但它只需要一个参数 – 正方形的边。

这就是部分函数应用程序的用武之地。您可以使用部分函数应用程序来创建一个新函数,该新函数是现有函数的“部分”版本。这个新函数将已经设置第一个参数(宽度),并且只需要第二个参数(高度)。

如何在 JavaScript 中使用偏函数应用?

在 JavaScript 中使用部分函数应用程序有几种不同的方法。

方法1

最常见的方法是使用bind()方法。

bind() 方法是一种从现有函数创建新函数的方法。 bind() 方法有两个参数:要绑定的函数,以及要绑定到函数第一个参数的值。

例如,假设您有以下功能 –

function add(a, b) { 
   return a + b; 
}

您可以使用bind()方法创建一个已设置第一个参数(a)的新函数。

var add5 = add.bind(null, 5);

现在 add5 函数可以像这样使用 –

<!doctype html>
<html>
<head>
   <title>Examples</title>
</head>
<body>
   <div id="result"></div>
   <script>
      function add(a, b) {
         return a + b;
      }
      var add5 = add.bind(null, 5);
      document.getElementById("result").innerHTML = add5(10)
   </script>
</body>
</html>

如您所见,第一个参数 (5) 已设置,第二个参数 (10) 已传递给 add5 函数。

方法2

使用部分函数应用程序的另一种方法是创建一个函数,该函数接受现有函数和一个值,并返回一个已设置现有函数的第一个参数的新函数。

例如,您可以编写这样的函数 –

function bind(fn, val) { 
   return function() { 
      return fn.apply(null, 
      [val].concat(Array.prototype.slice.call(arguments)));
   };
}

该函数接受一个现有函数和一个值,并返回一个新函数,该函数的值绑定到现有函数的第一个参数。

例如,您可以使用bind()函数创建一个像这样的新函数 –

var add5 = bind(add, 5);

现在 add5 函数可以像这样使用 –

<!doctype html>
<html>
<head>
   <title>Examples</title>
</head>
<body>
   <div id="result"></div>
   <script>
      function add(a, b) {
         return a + b;
      }
      function bind(fn, val) {
         return function() {
            return fn.apply(null, [val].concat(Array.prototype.slice.call(arguments)));
         };
      }
      var add5 = add.bind(add, 5);
      document.getElementById("result").innerHTML = add5(10)
   </script>
</body>
</html>

如您所见,第一个参数 (5) 已设置,第二个参数 (10) 已传递给 add5 函数。

部分函数应用是一种从现有函数创建新函数的有用技术。它可用于创建与现有函数类似的函数,但已设置一些参数。

赞(0) 打赏
未经允许不得转载:码农资源网 » 如何在 JavaScript 中调用带有附加到参数的部分的函数?
分享到

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册