ES5的函数与ES6的箭头函数的区别

本文探讨ES5函数与ES6中箭头函数的主要区别,包括this绑定、构造函数使用、arguments对象及yield命令的应用场景。箭头函数改变了this的动态特性,使其在定义时即绑定作用域,但同时也限制了其作为方法和构造函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前被人问过这样一个问题,ES5的函数与ES6中的箭头函数有哪些区别
当时想着这么不是很简单么,ES6中的箭头函数是拥有this绑定的,且箭头函数的this绑定是尤其定义时的作用域决定的,且箭头函数的写法更精简。其实这么说也没有问题,但是太肤浅了。

查看了阮一峰大神的es6网站,看到有如下描述
(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

	由于箭头函数使得this从“动态”变成“静态”,下面两个场合不应该使用箭头函数。
	第一个场合是定义函数的方法,且该方法内部包括this
	第二个场合是需要动态this的时候,也不应使用箭头函数。

(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
至于为什么不可以使用new,我个人的理解是在构造函数的内部是没有prototype这个属性的,导致new调用不成功

(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。

(4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。

以上为箭头函数与普通函数的区别,详情可以看阮一峰大神的文章。

http://es6.ruanyifeng.com/#docs/function#箭头函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值