1.4.2 函数参数
开始
6. 使用 arguments 对象
函数的参数保存在一个类数组对象中。 在函数里,我们可以使用 arguments[i]
来获取传递给它的参数, 其中 i 是参数的序号,值从 0 开始。所以,传递给函数的第一个参数就是 arguments[0]
,参数的总数用 arguments.length
来表示。
使用 arguments 对象,我们可以使用比声明参数更多的参数来调用函数。比如:
// 函数定义:函数声明
function myConcat(separator) {
let result = "";
// 使用 arguments 对象
for (let i = 1; i < arguments.length; i++) {
result += arguments[i] + separator;
}
return result;
}
// 函数调用
myConcat(", ", "red", "orange", "blue");
myConcat("; ", "elephant", "giraffe", "lion", "cheetah");
myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");
注意:变量 arguments 是“类”数组而不是数组,因为它只具有有序索引 [i]
和 length 属性,而不具备所有的数组操作方法。
7. 函数参数
有两种特殊的参数语法:
default parameters,默认参数
rest parameters,剩余参数
7.1 默认参数
在 JavaScript 中,函数参数的默认值是 undefined。但在某些情况下,设置不同的默认值可能会更有用,这正是默认参数的用途。
之前,给参数设置默认值的方法通常是在函数体里判断参数值,如果它是 undefined,那就给它赋个新值。比如:
function multiply(a, b) {
b = typeof b !== "undefined" ? b : 1;
return a * b;
}
multiply(5); // 5
有了默认参数的语法,就不需要再手动检查了,可以直接这样写:
function multiply(a, b = 1) {
return a * b;
}
multiply(5); // 5
7.2 剩余参数
剩余参数的语法,允许我们将不定数量的参数表示成一个数组。比如:
// 这里用剩余参数收集从第二个到结尾的参数
function multiply(multiplier, ...theArgs) {
return theArgs.map(x => multiplier * x);
}
const arr = multiply(2, 1, 2, 3);
console.log(arr); // [2, 4, 6]
Last updated