es6-箭头函数

前言:回顾this指向

  • 谁调用的函数this就指向谁
  • 直接调用函数函数相当于window调用,所以this指向window
  • 通过new调用函数,this指向创建的新对象
  • 通过apply call bind调用this指向传入的参数
  • 如果是dom事件函数,this指向事件源

箭头函数是一个 函 数 表 达 式 \color{#f40}{函数表达式}

理论上任何函数表达式的场景都可以使用箭头函数

(参数)=>{
	内容处理
}
//简写
// 如果只有一个参数可以省略括号
参数=>{
	内容处理
}
// 如果只有一条语句返回可以大括号和return
参数=> 内容处理

简写箭头函数

如果箭头函数执行体只有一句并且有返回

(a, b, c) => {
   			return c = a + b
   		}
   		// 简写
   		(a, b, c) => c = a + b
   		
   		// 如果要返回对象
   		(a, b, c) => {
   			return{
   				a:a,
   				b:b,
   				c:a+b
   			}
   		}
   		//简写 (用一个小括号)
   		(a, b, c) =>({
   				a:a,
   				b:b,
   				c:a+b
   			})

注意细节

  • 箭头函数的函数体中的this,取决于箭头函数定义的位置的this指向,而与任何调用无关了
    例如:
const obj = {
   			count:0,
   			start:function(){
   				//这里this指向obj (obj调用的这个函数谁调用指向谁)
   				setInterval(function(){
   					// 这里this指向 window 这里setInterval相当于是window调用
   					this.count++
   					console.log(this.count) //打印 undefined
   					// undefined ++ => NAN
   					console.log(this.count++) //打印 NAN
   				},10000)
   			}
   		}
   		obj.start()
   		
   		//使用箭头函数解决*************************************************//
   		
const obj = {
   			count:0,
   			start:function(){
   				//这里this指向obj (obj调用的这个函数谁调用指向谁)
   				setInterval(()=>{
   				//箭头函数的函数体中的this,取决于箭头函数定义的位置的this指向,而与任何调用无关了 相当于:setInterval(this,10000)这里的this相当于 obj
   					this.count++
   					console.log(this.count) //打印 count
   					// undefined ++ => NAN
   					console.log(this.count++) //打印 count
   				},10000)
   			}
   		}
   		obj.start()
   	//下面这种使用箭头函数this是window,一般不这样写也没有这样的需求
   	
   	//this不在函数里面都是指向widow 
const obj = {
   			count:0,
   			start:()=>{
   				// 这里的this是window
   				}
   		}
   		obj.start()
   		//将上面的简化,好理解
   		const obj1 = {
   			count:0,
   			start:this
   		}
   		console.log(obj1.start) //打印 window
  • 箭头函数中,不存在this、argument、new.target,如果使用了则使用的是函数外层对应的this、argument、new.target(相当于箭头函数定义的位置的this指向)

  • 箭头函数没有原型(但是有隐式原型,这个是所有函数都有的)

  • 箭头函数是不能用来当作构造函数

应用场景

  1. 临时性使用函数,例如
    • 事件处理函数
    • 异步处理函数
    • 其他临时性函数
  2. 为了绑定外出this的函数
  3. 在不影响代码的情况下,为了然代码更简洁更加易读,也使用箭头函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值