返回
谈谈ES6函数参数的特殊待遇
前端
2023-09-28 12:24:34
函数在编程中的地位
函数在很多编程语言中都是一等公民,这意味着函数可以作为另一个函数的参数进行传递,也可以作为返回值。
一等公民的概念意味着函数具有以下特点:
- 函数可以被赋值给变量。
- 函数可以作为参数传递给其他函数。
- 函数可以作为返回值。
- 函数可以作为闭包使用。
由于函数是一等公民,因此在参数的传递上,有一些特殊待遇也不足为奇。ES6中,增加了默认参数和函数参数的解构,为函数参数的传递方式增加了更多的灵活性。
ES6的默认参数
默认参数允许我们在调用函数时,省略某些参数的值。如果省略了某个参数的值,则使用该参数的默认值。
默认参数的语法如下:
function func(param1, param2 = defaultValue) {
// 函数体
}
例如,我们定义了一个函数func,它有两个参数:param1和param2。param2的默认值是10。
当我们调用func函数时,我们可以省略param2的值。例如:
func(1);
这等价于:
func(1, 10);
ES6的函数参数解构
函数参数解构允许我们将函数的参数值解构为变量。
函数参数解构的语法如下:
function func({param1, param2}) {
// 函数体
}
例如,我们定义了一个函数func,它接受一个对象作为参数。对象中包含两个属性:param1和param2。
当我们调用func函数时,我们可以使用函数参数解构来解构参数对象。例如:
func({param1: 1, param2: 2});
这等价于:
function func(obj) {
const param1 = obj.param1;
const param2 = obj.param2;
// 函数体
}
ES6的rest运算符
rest运算符允许我们将函数的参数值收集到一个数组中。
rest运算符的语法如下:
function func(...rest) {
// 函数体
}
例如,我们定义了一个函数func,它接受任意数量的参数。
当我们调用func函数时,我们可以使用rest运算符来收集参数值。例如:
func(1, 2, 3, 4, 5);
这等价于:
function func(a, b, ...rest) {
const c = rest[0];
const d = rest[1];
const e = rest[2];
// 函数体
}
结语
ES6中增加的默认参数、函数参数解构和rest运算符,为函数参数的传递方式增加了更多的灵活性。这些特性可以使我们的代码更加简洁和易读。