如何在 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 方法或使用展开运算符 (...) 来实现。

更新于:2022年9月14日

浏览量:118

启动你的职业生涯

完成课程获得认证

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