ES6_箭头函数

本文详细介绍了ES6中的箭头函数的多种写法,包括简洁形式,并指出在不同场景下使用箭头函数的注意事项。例如,箭头函数不适合用作事件回调,因为其this指向不正确;在对象方法中使用可能导致this指向window;箭头函数无法访问arguments对象;不能作为构造函数创建实例;以及在定义对象原型方法时会导致this指向问题。因此,理解箭头函数的限制对于避免运行时错误至关重要。
摘要由CSDN通过智能技术生成

优化函数的写法
如何去定义函数

方式一:
function  sum (x, y) {
   return x+y
}
const res = sum(2, 3)
console.log(res)    // 5
方式二:
const sum2 = function (x, y) {
   return x+y
}
const res = sum2(3, 4)
console.log(res)    // 7

在ES6中如何写出优雅的函数呢

const sum3 = (x, y) +> {
   return x+y
}
const res = sum3(4, 5)
console.log(res)    // 9

在箭头函数箭头的左边,指的是函数的参数,在右边指的是方法体
箭头函数的简写:
1.当方法体中只有一行代码,大括号可以省略,return也不需要 const sum4 = (x, y) => x + y
2.

// 没有参数
const fn = () => {
   // 业务逻辑
} 
// 一个参数,那么可以省略参数括号
const fn = (x) => {
   // 业务逻辑
} 
======分割线
const fn = x => {
   // 业务逻辑
} 

箭头函数任何场景都可以使用吗
场景一:
在这里插入图片描述
当把箭头函数当做事件的回调函数的时候,这时的this,并不是指向当前绑定的对象,指向的是window. 所以事件回调的时候使用箭头函数,需要注意this的指向问题
场景二:
定义对象,对象里面会有属性和方法
在这里插入图片描述
没有问题
如果改成箭头函数呢
在这里插入图片描述
就打印不出来。
在这里插入图片描述

使用箭头函数去定义对象里面的方法,也需要知道this指向问题,这里的this也是指向window,为什么是空值,因为name属性是比较特殊的属性,window下面有name属性,所以当打印this.name的时候,打印是的空字符串而不是undefined
在这里插入图片描述
在ES6里面有针对对象里面的方法简写的形式:
这个形式是将冒号和function都去掉
在这里插入图片描述
场景三:
在这里插入图片描述
在这里插入图片描述函数arguments能够取到形参的值,用function的时候可以取到arguments的值
箭头函数:
在这里插入图片描述
结果:
在这里插入图片描述
在箭头函数,arguments是不能够使用的
场景四:
不能使用箭头函数做为构造函数

// 类
function Course (name, price) {
     this.name = name
     this.price = price
}
// 箭头函数写法
const Course = (name, price) => {
     this.name = name
     this.price = price
}

const c1 = new Course('es', 500)
conosle.log(c1)

使用function函数
在这里插入图片描述

使用箭头函数
在这里插入图片描述
报错Course不是一个构造函数
场景五:在ES5 构造类下面还有很多方法,类的方法定义在原型下面

// 类
function Course (name, price) {
     this.name = name
     this.price = price
}
Course.prototype.study = function () {
   console.log(`我要学习${this.name},价格是:${this.price}`)
}
c1.study()

结果:
在这里插入图片描述
如果改成箭头函数的写法呢:

Course.prototype.study =  () => {
   console.log(`我要学习${this.name},价格是:${this.price}`)
}
c1.study()

结果:
在这里插入图片描述
这里的this还是指向window,window下面的name是空值,没有price属性,所以是undefined
使用箭头函数,不能定义原型下面的方法
以上场景使用箭头函数要注意

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值