之前被人问过这样一个问题,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#箭头函数