JavaScript 箭头函数与 function 函数的区别
见过箭头函数后,知道箭头函数是 function
定义函数的简写,然后还有一点是箭头函数中的 this
是上级代码的 this
。
其实除了这两点外,箭头函数和 function
函数还有很多区别。
1、基本语法
1 | // 没有参数时 |
2、this 指向
- 在
顶级代码
中,this
指向window
对象; - 在
function
定义的函数中,this
指向该函数的对象; - 在
箭头函数
中,箭头函数不会创建自己的this
,始终指向箭头函数所在作用域下的this
。
用原型方法 apply()
、call()
、bind()
不能改变箭头函数中 this
的指向。
1 | const bar = { |
3、箭头函数不能做构造函数
不可以使用 new 命令创建箭头函数实例对象,因为箭头函数没有自己的 this
,不能调用 call()
、apply
。
箭头函数没有 prototype
属性,而 new
命令在执行时需要将构造函数的 prototype
赋值给新的对象的 __proto__
属性。
1 | function fn() { |
4、箭头函数没有 arguments
对象
1 | function fn() { |
5 对象属性的箭头函数
对象属性的箭头函数中的 this
并不是指向该对象,而是指向该对象的上一层。
1 | function fn () { |
不可以使用 yield 命令
因为不可以使用 yield 命令,箭头函数不能用作 Generator 函数。
总结
箭头函数不是 没有 this 的 function 函数
,并不能替代 function
函数,箭头函数更适用于需要匿名函数的地方。
建议用不到 function
函数特性的函数都用箭头函数定义,便于对函数的实现的理解。
JavaScript 箭头函数与 function 函数的区别
https://coderpan.com/front-end/javascript-arrow-function.html