在ES6
中对于函数的一些用法有了进一步的补充,例如参数相关的剩余参数与默认参数,以及箭头函数作为函数表达式的写法。
默认参数
在以前,如果我们要给函数参数的默认值,需要自行判断,如下
function foo(p) {
p = p === undefined ? "默认值" : p
console.log(p)
}
foo() // 默认值
有了默认参数以后,它允许在定义函数的时候,就给参数一个默认值,当调用时没有传参或传入undefined
时就会使用该值
function foo(p = "默认参数") {
console.log(p)
}
foo() // 默认参数
foo(undefined) // 默认参数
foo(null) // null
可见只有没传值或传入的是
undefined
时才会启用默认值,即便是当我们传入null,它也可以正常拿到
注意
- 默认参数,以及其后边的参数,不会计算在函数的
length
属性中
function foo(p1, p2 = "默认参数", p3) {
console.log(p)
}
console.log(foo.length) // 1
- 最好将默认参数放于参数最后
剩余参数
剩余参数允许我们将一个不定数量的参数表示为一个数组
与
arguments
的区别在于,剩余参数就是一个数组,可以调用数组的方法;arguments
只是一个类数组
function foo(...params) {
console.log(params)
}
foo(1, 2, 3, 4, 5, 6) // [1, 2, 3, 4, 5, 6]
与默认参数一样,他也不会计算在函数的
length
中console.log(foo.length) // 0
当然他也应该放在参数的最后,这个不放在最后直接就报错了,所以最后的排列应该为
普通参数,默认参数,剩余参数
这部分内容还算是比较简单的,关于箭头函数的话之前已经复习过了,详细内容可以看看箭头函数