首先说this的问题对于大多数新手来说都是个问题,现在由于es6的普及,箭头函数也是深受大家的喜爱,箭头函数中的this又是如何的?
由于个人写作水平有限,直接上干货
看了好几篇写的好的文章,我自己总结下:
箭头函数中的this是局部的,怎么理解呢?一般我们都知道,this是调用时确定的,确定于运行时的环境。个人理解箭头函数中的this是没有绑定的,也就是说根本不绑定this,所以说我们平时用的时候需要特别注意,当我们在箭头函数中使用了this,那这个this则会像作用域链一样一层一层的寻找,直到找到window(浏览器中)。show the code
function foo() {
this.id = 6;
return () => {
return () => {
console.log(this.id)
}
}
}
//输出6
其实箭头函数中也不绑定arguments,当在箭头函数中使用了arguments则会像this一样一层一层往上寻找show the code:
function foo() {
this.id = 6;
return () => {
return () => {
console.log(this.id)
console.log(arguments)
}
}
}
foo(1, 2, 3)()()
//6
//{ '0': 1, '1': 2, '2': 3 }