前端面试中的一道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

相关推荐

2024.3.20 50分钟 老东家. 感觉像是kpi面面试官全程思慕脸.无八股, 全是设计, 难得要死1. 实习项目, 亮点? 讲讲整体架构. 用了哪些技术?2. 传输数据量有多大? 怎么优化的?3. 操作日志的实现?     假如我需要你统一管理日志, 而不是业务方自己实现日志落库, 还要提供业务方日志查询功能, 怎么设计?    数据如何上报? 接口吗? 用mq业务方需要关心topic之类的配置吗?4. 告警功能是怎么做的? 只检测昨天的数据会不会有问题?    定时任务的原理? 如何只选一个节点? 如何分片任务? 了解xxl-job的原理吗? 5. 视频网站的分块上传怎么做的? 断点续传呢? 假如直接网断了, 如何设计才能继续上传?     前端生成uuid可能会撞, 怎么办?    如何判断热点数据? 假如让你做个点赞量 top100的视频榜单怎么做?    榜单放redis会不会有问题? 单key qps过高怎么办? 如何更新缓存? 服务重启怎么办?    假如一直缓存穿透, 如何处理?6. 网关有了解吗? 如何让日志总是能带上traceId?     假如异步处理业务了, 你的设计还能带上traceId吗?7. 手撕 比较版本号.真特曼难. #软件开发2024笔面经#
点赞 评论 收藏
转发
点赞 1 评论
分享
牛客网
牛客企业服务