箭头函数
// 1.有且只有一个参数,且只有一句返回
let f2 = a => a + 1;
console.log(f2(5));
=========返回结果=========
// 2.没有参数,且只有一句返回
let f2 = () => 25;
console.log(f2());
=========返回结果=========
// 3.多于一个参数,且只有一句返回
let f2 = (a, b, c) => a + b + c;
console.log(f2(1, 2, 3));
=========返回结果=========
// 4.如果有多条语句
let f2 = (a, b) => {
let c = 0;
c += a * a;
c += b * b;
c = Math.sqrt(c);
return c;
}
console.log(f2(3, 4));
=========返回结果=========
// 特例:如果直接返回一个对象,那么大括号外面要有小括号
let f21 = (a, b) => ({a: a, b: b});
console.log(f21(1, 2));
=========返回结果=========
// 5. 箭头函数和解构赋值的结合使用
let f2 = ({a, b}) => {
let c = Math.sqrt(a * a + b * b);
return c;
}
let obj = {a:3, b:4}
console.log(f2(obj));

// 应用
console.log([1, 2, 3].map(x => x * x));
=========返回结果=========
console.log([1, 5, 2, -3].sort((a, b) => a - b));
=========返回结果=========
// 6. rest参数
let f2 = (a, ...args) => args;
console.log(f2(1, 2, 3, 4));
=========返回结果=========
// 关于箭头函数要注意的几个语法特性
// 7.箭头函数的this是在定义时确定的,不是在调用时确定
function f(){
setTimeout(() => {console.log(this.id)}, 1000);
}
let obj = {id: 1}
f.call(obj);
=========返回结果=========
// 8. 箭头函数不可以作为构造函数,否则会抛出错误。
let f2 = () => {
this.a = 1;
this.b = 2;
};
let a = new f2();
=========返回结果=========
// 9.在箭头函数中,不能使用arguments对象
// 可以用rest参数
let f2 = () => {
console.log(arguments);
}
f2(1, 2, 3, 4);
=========返回结果=========
let f2 = (...args) => {
console.log(args);
}
f2(1, 2, 3, 4);
=========返回结果=========
// 10. 嵌套的箭头函数: 箭头函数内还能定义箭头函数
// 管道机制(pipeline)
let f1 = (...args1) =>({f2: (...args2) => ({f3: (...args3) =>{console.log(args3);}})})
var a = f1(1, 2, 3);
var b = a.f2(4, 5, 6);
var c = b.f3(7, 8, 9);
=========返回结果=========

=========返回结果=========

浙公网安备 33010602011771号