箭头函数

// 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);
=========返回结果=========
 

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

posted @ 2021-01-17 20:02  #Friday  阅读(137)  评论(0)    收藏  举报