如何在 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 函数。

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

更新于:2022年9月14日

361 次浏览

启动您的 职业生涯

完成课程后获得认证

开始学习
广告
© . All rights reserved.