箭头函数与普通函数有什么区别

84 阅读1分钟

一、箭头函数写法更简洁,根据情况不同的写法:

1.如果没有参数,就直接写一个空括号

2.如果只有一个参数,可以省略参数的括号

3.如果有多个参数,用逗号分割

4.如果函数体的返回值只有一句,可以省略大括号

5.如果函数体不需要返回值,且只有一句话,可以给这个语句前加一个void关键字,

let fn = () => void doesNotReturn();

二、箭头函数没有自己this

箭头函数不会创建自己的this,只会在自己的作用域的上一层继承this,所以箭头函数中的this指向在它定义时已经确定,之后不i会改变。

三、箭头函数继承来的this指向永远不会改变 ,

包括call(), apply()'bind()等方法

四、箭头函数不能作为构造函数使用

构造函数的new将函数中的this指向该对象,箭头函数没有自己this,this指向外层执行环境而且不能改变指向,所以不能当构造函数使用

五、箭头函数没有自己的arguments 访问的实际上是外层函数的arguments值

六、箭头函数没有prototype

七、箭头函数不能用作Generator函数,不能使用yeild关键字