首页 > 试题广场 >

以下代码执行的结果是:function fun ()&...

[单选题]
以下代码执行的结果是:
function fun () {
return () => {
return () => {
return () => {
console.log(this.name)
}
}
}
}
var f = fun.call({name: 'foo'})
var t1 = f.call({name: 'bar'})()()
var t2 = f().call({name: 'baz'})()
var t3 = f()().call({name: 'qux'})
  • foo foo foo
  • bar bar bar
  • qux qux qux
  • bar baz qux
这道题是阮一峰es6入门里面的例题,按理说不改错的,可见基础掌握得有多差劲了。
箭头函数没有自己的this
this的指向只有一个,就是函数foo的this,这是因为所有的内层函数都是箭头函数,都没有自己的this,它们的this其实都是最外层foo函数的this。所以不管怎么嵌套,t1、t2、t3都输出同样的结果。如果这个例子的所有内层函数都写成普通函数,那么每个函数的this都指向运行时所在的不同对象。
发表于 2021-06-23 11:27:23 回复(0)