-
最明显的区别,箭头函数可以没有function关键字定义,可以省略function
-
箭头函数体内的 this 对象,就是定义时所在的对象,而不是使用时所在的对象
-
在普通函数中,this的指向是可变的,但是在箭头函数中,它是固定的
-
箭头函数中的this指向函数定义时所在的对象,箭头函数的this指向固定化,不是因为箭头函数内部有绑定this的机制,是因为箭头函数根本没有自己的this。导致内部的this就是外层代码块的this。正是因为它没有this,所以就不能被当做构造函数
script 标签相当于一个代码块,this指向window,所以打印出来的是window对象
<script> const fun = () => { console.log(this); // window对象 } fun() </script><script> const fun = () => { console.log(this); // window对象 } fun.call({id: 123}) // 箭头函数就没有this,也没有改变this指向一说 </script><script> function fun() { return function (){ return () => { console.log(this); } } } let fn = fun.call({id:3}); fn.call({id:3})(); // 打印出来{id: 3} fn()(); // 打印出来window对象 <script>
-
-
不可以当做构造函数,也就是说,不可以使用new 命令,否则会抛出一个错误
-
不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用rest参数代替
-
不可以使用 yield 命令,因此箭头函数不能用作 Generator函数
-
因为箭头函数没有自己的this,所以当然不能用call bind apply这些方法改变this指向
-
箭头函数可以省略return,普通函数不行