美文网首页
箭头函数——为什么存在?

箭头函数——为什么存在?

作者: _贺瑞丰 | 来源:发表于2018-07-08 15:47 被阅读11次

    1. 是什么

    提供了简写语法糖

    • (a,b)=>{}
    • a=>a+1
      有很多精简的写法,单参数可以不写(),单语句可以不写{},省略return

    没this参数

    解决了this的问题

    • 取消了this,this是函数call的第一个参数
    • this不写,会默认按一定规则传参
    • this在封装后的代码中不可控,你无法确定this是什么
    funcA(arg1,arg2) = funcA.call(this,arg1,arg2) this没传就是空的,一般是调用的东西
    let obj = {
        name:'obj'
        hi(){
            console.log(this.name)
        }
    }
    obj.hi.call(obj)
    

    往往很多时候 我们定义的this很不可控的,你不使用call显示传递this,那么this默认传递与函数封装了this

    var controller = {
        el:'app'
      init(){
          $(this.el).on('click',this.onClick)
      },
      click(){console.log('asd')}
    }
    controller.init()
    controller.init.call(controller)
    

    上面两个this是一样的吗? 很多封装过的函数,你不知道 this 传递了什么参数,要么看文档,要么看源码

    解决上面的问题 在init内部将this保存下来,保持this的统一
    使用箭头函数,就消除this,内外部就统一了

    最终效果

    • 函数写起来很简洁
    • this变成了一个普通的参数,少了很多坑,新手向友好

    实践

    let array = [1,2,3,4,5]
    array.map(num=>num*num)
    

    相关文章

      网友评论

          本文标题:箭头函数——为什么存在?

          本文链接:https://www.haomeiwen.com/subject/adeouftx.html