函数对象解构赋值
1
2
3
4
5
6
7
function func({name,age}) {
age += 1;
console.log(age);
}

func({name:'张三',age:15});
func({age:15,name:'张三'});

通过键值形式传参,可以避免参数传反

设置默认值
1
2
3
4
5
6
function func({name,age} = {}) {
age += 1;
console.log(age);
}

func();

func()相当于传入了undefined,使用默认值,默认值是空值,空值加1返回NaN

1
2
3
4
5
6
function func({name='xx',age= 25} = {}) {
age += 1;
console.log(age);
}

func();

执行对象解构赋值,因为没有解构值,解构默认值要生效:name=’xx’,age= 25

接收用户任意值
1
2
3
4
5
function func(...v) {
console.log(v)
}

func(1,2,3,4,5)

形参使用…v,表示接收用户任意长度数值,赋值给v

1
2
3
4
5
function func(a,b,c,...v) {
console.log(v)
}

func(1,2,3,4,5)

函数里声明了形参对应传参,剩余的就是默认值v

数组传参
1
2
3
4
5
function func(a,b) {
console.log(a,b);
}

func(...[1,2])

…[1,2],这种写法是将数组里的元素拆开传入参数

匿名函数
1
2
3
4
5
let fun1 = function() {
console.log('fun1');
}

fun1();

函数名省略掉,使用变量接收函数,调用函数变量加括号调用

箭头函数
1
2
3
4
5
fun1();

let fun2 = () => console.log('fun1');

fun2();

箭头函数省略掉function关键字和函数名,括号后用=>,后面跟上函数体,省略掉花括号

1
2
3
4
5
6
7
8
9
10
11
// let fun2 = function (x) {
// console.log(x);
// console.log('fun2');
// }
//
// fun2(1);

//使用箭头函数简化匿名函数
let fun2 = x => {console.log(x);console.log('fun2');}

fun2(1);

形参只有一个时括号可以省略,函数体中多个语句花括号不能省略,多个语句用分号分隔

1
2
3
4
5
6
7
let fun3 = function() {
return 'fun3'
}
console.log(fun3())

let fun33 = () => 'fun33'
console.log(fun33())

没有形参时括号不能省略,return关键字也可以省略

1
2
3
4
5
6
7
fun4 = function (x,y) {
return x + y
}
console.log(fun4(1,2))

fun44 = (x,y) => x + y;
console.log(fun44(3,5))

多个形参括号不能省略,return关键字也可以省略

实际应用
1
2
3
4
5
6
7
let ladies = ['西施','王昭君','貂蝉','杨玉环']

// ladies.forEach(function (value,index,array) {
// console.log(value,index,array);
// })

ladies.forEach((value,index,array) => console.log(value,index,array))