有梦想,有干货,微信搜索 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。问题1:下面代码输出结果是什么
本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试完整考点、资料以及我的系列文章。
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是一个异步操作,所以它会进入任务队列并等待执行的机会。
因为
x
为 true
,所以会进入 "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
原因:
setTimeout
和 setInterval
是一个异步操作,所以首先,它调用 setInterva
。,而
setInterval
将每隔 200 毫秒打印一次 count
值,然后在2秒后 setTimeout
将被调用,此时
x
被更改为 false
。setInterval
条件不满足,所以不会在打印 count
的值,然后继续往下执行。交流
【求助,这几道面试题有些我回答不出来了】有梦想,有干货,微信搜索 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。
本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试完整考点、资料以及我的系列文章。
文章图片
推荐阅读
- SQL CASE 表达式
- 千分位处理函数(超详细注释)
- 爱智JSRE开发需要注意什么()
- 手写
- Promise面试题思考延伸
- 面试官居然要我用JS代码计算LocalStorage容量!
- [记录] TypeError: Invalid attempt to spread non-iterable instance.
- 《重构 JavaScript》读后感和部分摘录
- DNS域名解析过程简述