几道代码题
新 2019-12-01
code
interview
# Q1
setTimeout(function() {
console.log("timeout1");
}, 1000);
console.log("start");
Promise.resolve().then(function() {
console.log("promise1");
Promise.resolve().then(function() {
console.log("promise2");
});
setTimeout(function() {
Promise.resolve().then(function() {
console.log("promise3");
});
console.log("timeout2");
}, 0);
});
console.log("end");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Answer
startend
promise1
promise2
timeout2
promise3
timeout1
# Q2
async function async1() {
console.log("async1 start");
await async2();
console.log("async1 end");
}
async function async2() {
console.log("async2");
}
console.log("script start");
setTimeout(function() {
console.log("setTimeout");
}, 0);
async1();
new Promise(function(resolve) {
console.log("promise1");
resolve();
}).then(function() {
console.log("promise2");
});
console.log("script end");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Answer
script startasync1 start
async2
promise1
script end
promise2
async1 end
setTimeout
# Q3
let a = { a: 10 };
let b = { b: 10 };
let obj = {
a: 10
};
obj[b] = 20;
console.log(obj[a]);
1
2
3
4
5
6
7
2
3
4
5
6
7
Answer
obj[b] 一个对象作为键时会转换为string, obj 变为{a: 10, [object Object]: 20}
# Q4
var a = 10;
var obj = {
a: 20,
say: function() {
console.log(this.a);
}
};
obj.say();
// 如何打印10?
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Answer
1.箭头函数2.call
3.obj.say赋值变量
# Q5
["1", "2", "3"].map(parseInt);
1
Answer
[1, NaN, NaN]# Q6
{} + [] 和 [] + {}
1
Answer
0'[object Object]'
# Q7
for (let i = 1; i < 5; i++) {
if (i === 3) continue;
console.log(i);
}
1
2
3
4
2
3
4
Answer
1 2 4如果某个条件返回true,则continue语句跳过迭代。
阅读量: