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

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

上一篇:JS中所有数组的方法和所有的对象方法,包含ES5和ES6


下一篇:JavaScript、ES5和ES6的介绍和区别