一个函数可以具有一个或多个参数,这些参数将由调用代码提供并可以在函数内部使用。
JavaScript是一种动态类型脚本语言,因此函数参数可以具有任何数据类型的值。
函数参数是函数定义中列出的名称。
函数实参是传递给函数(并由函数接收)的实际值。
在定义函数以在运行时接受输入值时,可以指定参数。
函数参数在函数定义的括号()中列出。
// 定义函数 function greet(name) { document.write("Hello, " + name); } // 以“Seagull”作为参数调用greet函数 greet("Seagull");测试看看‹/›
您可以根据需要定义任意数量的参数。
// 定义函数 function add(num1, num2, num3) { var total = num1 + num2 + num3; document.write(total); } // 调用函数 add(5, 20, 10); // 输出: 35 add(-5, 8, 7); // 输出: 10测试看看‹/›
但是,对于您指定的每个参数,在调用函数时都需要将相应的参数传递给该函数,否则其值将变得不确定。
//定义函数 function showFullname(fName, lName) { document.write(fName + " " + lName); } // 调用函数 showFullname("Kavy", "Mark"); // 输出: Kavy Mark showFullname("John"); // 输出: John undefined测试看看‹/›
如果未传递值或未定义,则默认函数参数允许使用默认值初始化命名参数。
这意味着,如果在调用函数时未提供任何参数来使用这些函数,则将使用这些默认参数值。
function myFunc(a, b = 20) { // 如果未传递或未定义参数b,则b为20 return a + b; } myFunc(10, 5); // 返回 15 myFunc(10);// 返回 30测试看看‹/›
JavaScript中的所有函数默认都可以使用arguments 对象。参数对象包括每个参数的值。
arguments对象是一个类似于object的数组。您可以使用类似于数组的索引来访问其值。
下面的示例从传递的参数中返回最大数目:
getMax(9, 15, 61, 3); function getMax() { let max = 0; for(let i = 0; i < arguments.length; i++) { if (arguments[i] > max) { max = arguments[i]; } } return max; }测试看看‹/›
以下示例返回所有传递的参数的总和:
getSum(9, 15, 61, 3); function getSum() { let sum = 0; for(let i in arguments) { sum += arguments[i]; } return sum; }测试看看‹/›
即使函数不包含任何参数,arguments对象也是有效的。
arguments对象是类似于对象的数组,但是,它不支持数组方法。
reset参数语法允许我们的参数数目不定传递给一个函数为一个数组。
当您想将参数传递给函数但不知道需要多少个参数时,这特别有用。
通过在命名参数前面加上rest运算符(...)(即三个点)来指定rest参数。
function sum(...arr) { return arr.reduce((previous, current) => { return previous + current; }); } sum(1, 2); // 返回 3 sum(1, 2, 3, 4);// 返回 10 sum(1, 2, 3, 4, 5, 6); // 返回 21测试看看‹/›
在函数调用中,参数是函数的参数。
JavaScript参数由值传递:该函数仅知道值,而不是参数的位置。
如果函数更改了参数的值,则不会更改参数的原始值。
对参数的更改在函数外部不可见(反映)。
在JavaScript中,对象引用是值。
因此,对象的行为就像通过引用传递一样:
如果函数更改了对象属性,它将更改原始值。
对对象属性的更改在函数外部可见(反映)。