你真的了解箭头函数和普通函数的区别吗?

71 阅读2分钟

1.箭头函数比普通函数更加简洁 如果没有参数,就直接写一个空括号即可, 如果只有一个参数,可以省去参数的括号 如果有多个参数,用逗号分割 如果函数体的返回值只有一句,可以省略大括号, 如果函数体不需要返回值,且只有一句话,可以给这个语句前面加一个void关键字。 最常见的就是调用个函数: let fn = () => void doesNotReturn( ); 2.箭头函数没有自己的this 箭头函数不会创建自己的this, 所以它没有自己的this,它只会在自己作用域的上一层继承this。 所以箭头函数中this的指向,在它定义时已经确定了,之后不会改变 3.箭头函数继承来的this指向永远不会改变 对象obj的方法b是使用箭头函数定义的,这个函数中的this就永远指向它定义时所处的全局执行环境中的this, 即便这个函数是作为对象obj的方法调用,this依旧指向wwindow对象。需要注意,定义对象的大括号{}是无法形成一个单独的执行环境的,它依旧是处于全局执行环境中 4.call()、apply()、bimd()等方法不能改变箭头函数中this的指向 5.箭头函数不能作为构造函数使用 构造函数在new的步骤在上面已经说过了,实际上第二步就是将函数中的this指向该对象。 但是由于箭头函数没有自己的this,且this指向外层的执行环境,且不能改变指向,所以不能当做构造函数使用 6.箭头函数没有自己的arguments 箭头函数没有自己的arguments对象。在箭头函数中访问arguments实际上获得的是它外层函数的arguments值 7.箭头函数没有prototype 8.箭头函数不能用作Generator函数,不能使用yeild关键字