1. 函数参数的默认值
function f(x=0, y=0){}
2. 函数的参数默认值和解构赋值结合使用
function ({x, y=5} = {}){} //传进的参数是一个对象,当传进的参数为空时,默认创建一个空对象{x=undefined, y=5}
// 写法一
function m1({x = 0, y = 0} = {}) {
return [x, y];
}
// 写法二
function m2({x, y} = { x: 0, y: 0 }) {
return [x, y];
}
上面的两种写法,第一种传入的参数是一个对象,默认值是一个空对象,对象中的属性设置了默认值
第二种写法,传入的参数是一个对象,默认值是一个已经解构的对象,当传入的参数中属性和定义参数的属性不一样时,传进来的参数中存在的属性值就是传进来的值,未传进来的值是undefined,因为此时默认值不生效,不能对对象进行解构赋值
3. 参数默认值的位置
一般情况下,需要设置默认值的参数放到函数参数的末尾,这样方便查看哪些参数可以省略,如果不是写在末尾,一般这样的参数是不能省略的,所以默认值一般没啥用
4. 函数也有length(参数的长度)这个属性,当为函数的参数定义默认值时,定义了默认值的参数不参与length计算
5. 可以使用参数默认值指定某个参数不可省略,否则就会报错
6. rest参数,可以使用...变量名来获取多余的参数,因为使用了这个参数,可以向函数传递任意数目的参数
function f(...value){
//这里可以使用map来遍历value
}
7. name属性, 使用函数.name属性,会输出函数的函数名
8. 尾调用, 在函数的最后一步调用另外一个函数(返回值必须是调用其他函数)