前端面试中的一道this指向题 求探讨

var name = 'a'
var foo = {
    name: 'b',
    say: function() {
        console.log(this.name)
    }
}

var bar = {
    name: 'c',
    say: function(fun) {
        fun()
    }
}

bar.say(foo.say()) //a

bar.say(() => foo.say()) //b

箭头函数那个能想明白 第一个想不明白为什么this会指向windows呢
查询发现 ‘被嵌套的函数独立调用时,this默认指向了window’ 但是我感觉这也不算独立调用吧 不还是foo.say吗

修改一下 是bar.say(foo.say) //a 多打了一个括号 让大家误解了
#前端工程师##笔经#
全部评论
bar.say(foo.say()) 这行代码是会报错的,先执行foo.say(),输出b。foo.say()执行后的返回值并不是函数类型,所以在执行bar.say(foo.say())的时候是报错的。 ps:最后两行代码最后都是执行 foo.say()。点前面是foo,say也不是箭头函数,所以this都是指向foo的
点赞 回复 分享
发布于 2021-04-18 18:02
第一个的答案是b
点赞 回复 分享
发布于 2021-04-17 10:07
这不是把foo.say()传进来了吗,进行浅拷贝,然后在bar.say里进行独立调用fun()
点赞 回复 分享
发布于 2021-04-15 21:36
答案明明是b  Uncaught TypeError: fun is not a function
点赞 回复 分享
发布于 2021-04-15 16:28

相关推荐

不愿透露姓名的神秘牛友
07-18 18:23
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着...:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务