Interview-QS-Code-1

前端面试 笔试题 代码阅读 1

Q:下面这段代码输出什么?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var a = 1;
var obj = {
a: 2,
func1: () => {
return this.a;
},
func2: function () {
return this.a
}
}

var obj2 = {
a: 3
}
console.log(obj.func1())
console.log(obj.func2())
console.log(obj.func2.apply(obj2))
var newFunc = obj.func2
console.log(newFunc())

A: 1,2,3,1

Q:下面这段代码输出什么?

1
2
3
4
5
for (var i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i)
}, 1000 * i)
}

A: 5,5,5,5,5 看起来像每隔一秒输出一次(实际统计不到5s)

Q:下面这段代码输出什么?

1
2
3
4
5
for (let i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i)
}, 1000 * i)
}

A:0,1,2,3,4 看起来像每隔一秒输出一次(实际统计不到5s)

Q:下面这段代码输出什么?

1
2
3
4
5
6
7
for (let i = 0; i < 5; i++) {
(function (i) {
setTimeout(function () {
console.log(i)
}, 1000 * i)
})(i)
}

A:0,1,2,3,4
因为闭包,所以输出0、1、2、3、4,看起来像每隔一秒输出一次(实际统计不到5s)

Q:下面这段代码输出什么?

1
2
3
4
5
6
7
8
var bb = 1
function aa(bb) {
console.log(bb)
bb = 2;
console.log(bb)
}
aa(bb)
console.log(bb)

A:1,2,1 函数有自己的作用域


Interview-QS-Code-1
https://tedding.dev/2020/04/23/171a34b99c8.html
作者
TED.DING
发布于
2020年4月23日
许可协议