如何在 JavaScript 中调用带有预先添加参数的函数?
JavaScript 函数可以带有或不带参数调用。当带有参数调用时,函数将使用传入的值作为参数执行。当不带参数调用时,函数将不带任何参数执行。
在某些情况下,需要用部分参数调用函数,而不是全部参数。这可以通过使用 Function.prototype.apply 方法或使用展开运算符 (...) 来实现。
使用 Function.prototype.apply 方法
Function.prototype.apply 方法可以用来调用一个函数,但只使用部分参数。apply 方法的第一个参数是 this 值,后面跟着一个参数数组,这些参数将传递给函数。
语法
apply(thisArg) apply(thisArg, argsArray)
参数
thisArg − 提供给函数调用的 this 值。如果函数不在严格模式下,null 和 undefined 将被全局对象替换,原始值将被转换为对象。
argsArray 可选 − 一个类似数组的对象,指定函数应调用的参数,如果函数不应提供任何参数,则为 null 或 undefined。
示例
例如,考虑以下代码:
<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <script> function add(a, b) { return a + b; } document.getElementById("result").innerHTML = add.apply(null, [1, 2]) </script> </body> </html>
this 值作为第一个参数传递给 apply 方法,参数数组作为第二个参数传递。函数将使用 this 值和传入的值作为参数执行。
Function.prototype.apply 方法是调用函数时只使用部分参数的一种强大的方法。通过使用 apply 方法,您可以避免硬编码要传递给函数的参数。
使用展开运算符
展开运算符 (...) 可以用来调用一个函数,但只使用部分参数。
展开运算符将参数数组展开成单个参数。
例如,考虑以下代码:
<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <script> function add(a, b) { return a + b; } document.getElementById("result").innerHTML = add(...[1, 2]) </script> </body> </html>
参数数组被展开成单个参数,函数将使用这些参数执行。
使用 bind() 方法
Function.prototype.bind() 方法可以用来创建一个新的函数,该函数将使用一些预先添加的参数调用原始函数。
例如,考虑以下代码:
<!doctype html> <html> <head> <title>Examples</title> </head> <body> <div id="result"></div> <script> function add(a, b) { return a + b; } const add1 = add.bind(null, 1); document.getElementById("result").innerHTML = add1(2) </script> </body> </html>
bind 方法的第一个参数是 this 值,其余参数在调用函数时用作函数的参数。在这个例子中,this 值传递为 null,值 1 作为第一个参数传递给 add 函数。
bind 方法返回一个新函数,该函数将使用给定的参数调用。在这个例子中,新函数使用值 2 调用,add 函数使用值 1 和 2 调用。
JavaScript 函数可以带有或不带参数调用。在某些情况下,需要用部分参数调用函数,而不是全部参数。这可以通过使用 Function.prototype.apply 方法或使用展开运算符 (...) 来实现。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP