如何在 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 函数。
部分函数应用是一种用于从现有函数创建新函数的有用技术。它可以用来创建与现有函数类似的函数,但一些参数已经设置好。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP