比较点 |
普通函数 |
箭头函数 |
具体案例 |
简写 |
/ |
箭头函数如果没有参数,同时函数体的返回值只有一句,则{}和return都可以省略。 |
1、函数简写 |
this指向 |
this总是指向调用它的对象,如果作为构造函数,它指向创建的对象实例 |
箭头函数的this指向的是父级作用域的this,是通过查找作用域链来确定 this 的值,也就是说看的是上下文的this,指向的是定义它的对象,而不是使用时所在的对象。 |
2、this指向 |
this改变 |
call()、apply()、bind()等方法能改函数中this的指向 |
call()、apply()、bind()等方法不能改变箭头函数中this的指向 |
3、改变this指向 |
构造函数 |
可以作为构造函数,用来创建对象实例 |
箭头函数不能作为构造函数使用 |
4、构造函数 |
arguments对象 |
每一个普通函数调用后都具有一个arguments对象,用来存储实际传递的参数。 |
箭头函数没有自己的arguments,取而代之用rest(剩余)参数...arg来解决 |
5、arguments与...args |
prototype原型 |
具有prototype |
没有prototype原型 |
6、prototype原型 |
1、箭头函数简写:
- 箭头函数如果没有参数,同时函数体的返回值只有一句,则{}和return都可以省略
var fn = () => console.log("123");//去掉了{} 和 return
fn(); //'123'
2、this指向:
- 普通函数中this指向的是调用它的对象,如果作为构造函数,它指向创建的对象实例
- 箭头函数不会创建自己的this, 所以它没有自己的t