前端面试中的一道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 多打了一个括号 让大家误解了
#前端工程师##笔经#
全部评论
答案明明是b  Uncaught TypeError: fun is not a function
点赞 回复
分享
发布于 2021-04-15 16:28
这不是把foo.say()传进来了吗,进行浅拷贝,然后在bar.say里进行独立调用fun()
点赞 回复
分享
发布于 2021-04-15 21:36
联易融
校招火热招聘中
官网直投
第一个的答案是b
点赞 回复
分享
发布于 2021-04-17 10:07
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

相关推荐

头像
不愿透露姓名的神秘牛友
03-28 16:32
点赞 评论 收藏
转发
点赞 1 评论
分享
牛客网
牛客企业服务