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)
网友评论