箭头函数

  • 解决问题:
    1.缩减代码
    2.改变 this 指向

普通写法vs箭头函数vs

    //普通写法
    const number=function(number){
        return number*2
    };

    //箭头函数
    const number2=(number)=>{
        return number*2
    };

    console.log(number2(2)) //-->4

箭头函数升级版本

  • 升级版本:必须写到一行,return 可以省略。
     const number3=(number)=> number*2;

     console.log(number2(2)) //-->4
  • 还可以继续简化(单个参数量)
     const number3=number=> number*2;

     console.log(number2(2)) //-->4

     //或者可以这样
    const number3=(number=> number*2);
  • 多个参数:参数必须加括号
    const number5=(number,number2)=> number+number2

    console.log(number5(2,1)) //--> 3
  • 多条语句:后面必须加括号
    const number5=(number,number2)=>{
        
        sum=number+number2;

        return sum

    }

    console.log(number5(2,1)) //--> 3

改变this指向


  // 改变this指向

    const team={

        name:['tom','bob'],
        teamName:'ES6',
        teamSummary:function(){
            
            return this.name.map(function (items) {

                //当前this已经没有明确指向了

                return `${items}属于${this.teamName}分类下`

            })
        }
    };

    console.log(team.teamSummary())//this.teamName显示undefined;

  • 如果想显示teamName
    
    //方法1(提前声明一个this)

    const team={

        name:['tom','bob'],
        teamName:'ES6',
        teamSummary:function(){

            let that=this;//声明一个this
            
            return this.name.map(function (items) {

                return `${items}属于${that.teamName}分类下`

            })
        }
    };

    console.log(team.teamSummary())//正常显示

    //方法2(bind()方法)

    const team2={

        name:['tom','bob'],
        teamName:'ES6',
        teamSummary:function(){
            
            return this.name.map(function (items) {

                return `${items}属于${that.teamName}分类下`

            }.bind(this))//把this绑定给函数
        }
    };

    //方法3(箭头函数)

    const team={
    
            name:['tom','bob'],
    
            teamName:'ES6',
    
            teamSummary:function(){
    
                return this.name.map((items)=> {
    
                    //当前this已经没有明确指向了,如果要明确,就得在上一个return之前先声明一个this;
    
                    return `${items}属于${this.teamName}分类下`
    
                })
            }
        };