求助,这几道面试题有些我回答不出来了

有梦想,有干货,微信搜索 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。
本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试完整考点、资料以及我的系列文章。
问题1:下面代码输出结果是什么
let object_1 = { name: '小智' } let object_2 = object_1 object_1.name = '王大志' console.log(object_2)

输出
{ name: '王大志' }

原因:我们可以看到,在传递非原始数据类型时,分配运算符直接传递地址(引用)。因此,非原始数据类型总是通过引用来传递。
问题2:下面代码输出结果是什么
var a = 10 var show = function () { console.log(a) a = 20 } show()

输出 10
原因:作用域提升
问题3:下面代码输出结果是什么
console.log(name) hello() function hello() { console.log('你的名字') }var name = '小智'

输出:
undefined 你的名字

懵了,为啥是undefined ,没搞懂,有知道答案的吗?
问题4:下面代码输出结果是什么
let x = true setTimeout(() => { x = false }) while (x) { console.log('hello') }

输出
无限打印 'hello'

原因是什么?我们知道 SJ 是一种单线程语言,setTimeout是一个异步操作,所以它会进入任务队列并等待执行的机会。
因为 xtrue,所以会进入 "while循环",它将连续打印 "hello",2秒后,setTimeout准备执行,但调用栈不是空的,它已经在运行 while 循环,所以 setTimeout 不会得到任何执行机会。
问题5:下面代码输出结果是什么
let x = true let count = 0 setTimeout(() => { x = false }, 2000) setInterval(() => { if (x) { console.log(count++) } }, 200)

输出:
0 1 2 3 4 5 6 7 8

原因:setTimeoutsetInterval 是一个异步操作,所以首先,它调用 setInterva
,而 setInterval 将每隔 200 毫秒打印一次 count 值,然后在2秒后 setTimeout
将被调用,此时 x 被更改为 falsesetInterval条件不满足,所以不会在打印 count 的值,然后继续往下执行。
交流
【求助,这几道面试题有些我回答不出来了】有梦想,有干货,微信搜索 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。
本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试完整考点、资料以及我的系列文章。
求助,这几道面试题有些我回答不出来了
文章图片

    推荐阅读