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