箭头函数不仅仅是编写简洁代码的“捷径”。它还具有非常特殊且有用的特性。 箭头函数的特点
- 没有this
- 没有argument
- 没有new
- 没有super
关于箭头函数的this如何确定 一句话就是在声明箭头函数的词法作用域里的this。 对于普通函数来说this,要看函数调用;箭头函数则是看函数声明 你可以把箭头函数的this看做一个变量,普通函数的this看做参数。 比如
const a = 1
const f = () => {
console.log(a)
}
f() // 1
this 就跟 a 一样,作用域里找不到,就往词法作用域里找。就算你用call来调用箭头函数也是没有作用的。
可以把对象、函数、普通和箭头函数结合起来考考你
用 obj.x()来调用, this就是obj。
坑一:注意我们只看函数,不看对象
坑二:x是普通函数只看调用,所以找this到这里就结束了。
箭头函数的冷知识
// 当你想用箭头函数返回一个对象时
const animal = (name,leg) => {name: name, leg: leg } // 这样会报错
const animal = (name,leg) => ({name: name, leg: leg }) //对了
// or
const animal = (name,leg) => [{name: name, leg: leg }][0]