箭头函数有哪些特点(3点)
更简洁的语法:比如只有一个形参时,就不需要用小括号括起来;当函数体只有一条语句时就不需要放到{}中;如果return语句是唯一的语句时,return关键字可以省略
箭头函数没有自己的this、arguments和super
箭头函数的this只会从自己的作用域链的上层继承
Tips:8、23
箭头函数与普通函数的区别(9点)
形式不同:箭头函数由箭头定义,而不同函数没有
箭头函数时匿名函数,而普通函数可以是匿名函数,也可以是具名函数
箭头函数不能用于构造函数,不能用于new;而普通函数可以是构造函数,可以使用new关键字来创建对象实例
普通函数的this总是指向调用它的对象,如果用作构造函数,this则指向创建的对象实例;箭头函数本身不创建this,或者说箭头函数没有this,但是在它声明时会捕获其所在的执行上下文作为它的this,this只会从它的所在的作用域链的上层继承
普通函数用arguments对象来接收所传的实际的参数,而箭头函数没有arguments,取而代之的是rest
箭头函数不能用于Generator函数,不能使用yeild关键字
箭头函数没有super
箭头函数没有new.target
箭头函数没有prototype原型对象,而普通函数具有prototype原型对象
Tips:24、89
箭头函数解决了什么问题
箭头函数解决了this指向的问题,在es5中,一旦对象的方法中又存在函数,就会产生this指向的问题。箭头函数解决了这个问题,this只会从它作用域链的上层继承(继承父级执行上下文里面的this)
Tips:83
new一个箭头函数后,它的this指向什么?
箭头函数不能用于构造函数,会报错
Tips:84
如果new一个箭头函数会怎么样?
会报错,因为箭头函数无法作为构造函数
Tips:233