[译]送你43道JavaScript面试题
source link: https://juejin.im/post/5d0644976fb9a07ed064b0ca
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
这两天的GitHub Trending repositories
被一个名叫 javascript-questions
的项目霸榜了,项目中记录了一些JavaScript
题目。
我大概从头到尾看了一遍,都是一些基础的题目,我大概花了半个小时(有些题很简单,可以一扫而过)把这些题做完了,虽然题目很简单,但是每道题都对应一个知识点,如果这个知识点你没有接触过,那肯定会做错,如果你接触过这些知识点,那么这些题对你来说就很容易。
建议大家也花半个小时来做一做,以便查漏补缺。
为方便大家能够更快的做题,而不把时间浪费在翻译上,我又花了几个小时把它们翻译成了中文,当然已经获得了作者授权。
文中有些点作者解释的不太完整,为了更好的理解,我在文中添加了一些个人解释。
JavaScript 进阶问题列表
我在我的Instagram上发布了每日JavaScript
选择题,我也会在这里发布!
从基础到高级:测试您对JavaScript
的了解程度,刷新您的知识,或为您的编码面试做好准备!💪 🚀我每周用新问题更新这个项目。
答案位于问题下方的折叠部分,只需单击它们即可展开。 祝你好运❤️
1. 下面代码的输出是什么?
function sayHi() {
console.log(name);
console.log(age);
var name = "Lydia";
let age = 21;
}
sayHi();
复制代码
- A:
Lydia
和undefined
- B:
Lydia
和ReferenceError
- C:
ReferenceError
和21
- D:
undefined
和ReferenceError
答案
name =
{
.log(name)
name =
}
2. 下面代码的输出是什么?
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
复制代码
- A:
0 1 2
and0 1 2
- B:
0 1 2
and3 3 3
- C:
3 3 3
and0 1 2
答案
3. 下面代码的输出是什么?
const shape = {
radius: 10,
diameter() {
return this.radius * 2;
},
perimeter: () => 2 * Math.PI * this.radius
};
shape.diameter();
shape.perimeter();
复制代码
- A:
20
and62.83185307179586
- B:
20
andNaN
- C:
20
and63
- D:
NaN
and63
答案
4. 下面代码的输出是什么?
+true;
!"Lydia";
复制代码
- A:
1
andfalse
- B:
false
andNaN
- C:
false
andfalse
答案
5. 哪个选项是不正确的?
const bird = {
size: "small"
};
const mouse = {
name: "Mickey",
small: true
};
复制代码
- A:
mouse.bird.size
- B:
mouse[bird.size]
- C:
mouse[bird["size"]]
- D: All of them are valid
答案
6. 下面代码的输出是什么?
let c = { greeting: "Hey!" };
let d;
d = c;
c.greeting = "Hello";
console.log(d.greeting);
复制代码
- A:
Hello
- B:
undefined
- C:
ReferenceError
- D:
TypeError
答案
7. 下面代码的输出是什么?
let a = 3;
let b = new Number(3);
let c = 3;
console.log(a == b);
console.log(a === b);
console.log(b === c);
复制代码
- A:
true
false
true
- B:
false
false
true
- C:
true
false
false
- D:
false
true
true
答案
8. 下面代码的输出是什么?
class Chameleon {
static colorChange(newColor) {
this.newColor = newColor;
}
constructor({ newColor = "green" } = {}) {
this.newColor = newColor;
}
}
const freddie = new Chameleon({ newColor: "purple" });
freddie.colorChange("orange");
复制代码
- A:
orange
- B:
purple
- C:
green
- D:
TypeError
答案
9. 下面代码的输出是什么?
let greeting;
greetign = {}; // Typo!
console.log(greetign);
复制代码
- A:
{}
- B:
ReferenceError: greetign is not defined
- C:
undefined
答案
10. 当我们这样做时会发生什么?
function bark() {
console.log("Woof!");
}
bark.animal = "dog";
复制代码
- A: Nothing, this is totally fine!
- B:
SyntaxError
. You cannot add properties to a function this way. - C:
undefined
- D:
ReferenceError
答案
11. 下面代码的输出是什么?
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
const member = new Person("Lydia", "Hallie");
Person.getFullName = () => this.firstName + this.lastName;
console.log(member.getFullName());
复制代码
- A:
TypeError
- B:
SyntaxError
- C:
Lydia Hallie
- D:
undefined
undefined
答案
Person.prototype.getFullName = {
;
}
12. 下面代码的输出是什么?
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
const lydia = new Person("Lydia", "Hallie");
const sarah = Person("Sarah", "Smith");
console.log(lydia);
console.log(sarah);
复制代码
- A:
Person {firstName: "Lydia", lastName: "Hallie"}
andundefined
- B:
Person {firstName: "Lydia", lastName: "Hallie"}
andPerson {firstName: "Sarah", lastName: "Smith"}
- C:
Person {firstName: "Lydia", lastName: "Hallie"}
and{}
- D:
Person {firstName: "Lydia", lastName: "Hallie"}
andReferenceError
答案
12. 事件传播的三个阶段是什么??
- A: 目标 > 捕获 > 冒泡
- B: 冒泡 > 目标 > 捕获
- C: 目标 > 冒泡 > 捕获
- D: 捕获 > 目标 > 冒泡
答案
13. 所有对象都有原型.
答案
14. 下面代码的输出是什么?
function sum(a, b) {
return a + b;
}
sum(1, "2");
复制代码
- A:
NaN
- B:
TypeError
- C:
"12"
- D:
3
答案
15. 下面代码的输出是什么?
let number = 0;
console.log(number++);
console.log(++number);
console.log(number);
复制代码
- A:
1
1
2
- B:
1
2
2
- C:
0
2
2
- D:
0
1
2
答案
16. 下面代码的输出是什么?
function getPersonInfo(one, two, three) {
console.log(one);
console.log(two);
console.log(three);
}
const person = "Lydia";
const age = 21;
getPersonInfo`${person} is ${age} years old`;
复制代码
- A:
Lydia
21
["", "is", "years old"]
- B:
["", "is", "years old"]
Lydia
21
- C:
Lydia
["", "is", "years old"]
21
答案
17. 下面代码的输出是什么?
function checkAge(data) {
if (data === { age: 18 }) {
console.log("You are an adult!");
} else if (data == { age: 18 }) {
console.log("You are still an adult.");
} else {
console.log(`Hmm.. You don't have an age I guess`);
}
}
checkAge({ age: 18 });
复制代码
- A:
You are an adult!
- B:
You are still an adult.
- C:
Hmm.. You don't have an age I guess
答案
18. 下面代码的输出是什么?
function getAge(...args) {
console.log(typeof args);
}
getAge(21);
复制代码
- A:
"number"
- B:
"array"
- C:
"object"
- D:
"NaN"
答案
20. 下面代码的输出是什么?
function getAge() {
"use strict";
age = 21;
console.log(age);
}
getAge();
复制代码
- A:
21
- B:
undefined
- C:
ReferenceError
- D:
TypeError
答案
21. 下面代码的输出是什么?
const sum = eval("10*10+5");
复制代码
- A:
105
- B:
"105"
- C:
TypeError
- D:
"10*10+5"
答案
22. cool_secret可以访问多长时间?
sessionStorage.setItem("cool_secret", 123);
复制代码
- A:永远,数据不会丢失。
- B:用户关闭选项卡时。
- C:当用户关闭整个浏览器时,不仅是选项卡。
- D:用户关闭计算机时。
答案
23. 下面代码的输出是什么?
var num = 8;
var num = 10;
console.log(num);
复制代码
- A:
8
- B:
10
- C:
SyntaxError
- D:
ReferenceError
答案
24. 下面代码的输出是什么?
const obj = { 1: "a", 2: "b", 3: "c" };
const set = new Set([1, 2, 3, 4, 5]);
obj.hasOwnProperty("1");
obj.hasOwnProperty(1);
set.has("1");
set.has(1);
复制代码
- A:
false
true
false
true
- B:
false
true
true
true
- C:
true
true
false
true
- D:
true
true
true
true
答案
25. 下面代码的输出是什么?
const obj = { a: "one", b: "two", a: "three" };
console.log(obj);
复制代码
- A:
{ a: "one", b: "two" }
- B:
{ b: "two", a: "three" }
- C:
{ a: "three", b: "two" }
- D:
SyntaxError
答案
26. JavaScript全局执行上下文为你创建了两个东西:全局对象和this关键字.
- C: 视情况而定
答案
27. 下面代码的输出是什么?
for (let i = 1; i < 5; i++) {
if (i === 3) continue;
console.log(i);
}
复制代码
- A:
1
2
- B:
1
2
3
- C:
1
2
4
- D:
1
3
4
答案
28. 下面代码的输出是什么?
String.prototype.giveLydiaPizza = () => {
return "Just give Lydia pizza already!";
};
const name = "Lydia";
name.giveLydiaPizza();
复制代码
- A:
"Just give Lydia pizza already!"
- B:
TypeError: not a function
- C:
SyntaxError
- D:
undefined
答案
29. 下面代码的输出是什么?
const a = {};
const b = { key: "b" };
const c = { key: "c" };
a[b] = 123;
a[c] = 456;
console.log(a[b]);
复制代码
- A:
123
- B:
456
- C:
undefined
- D:
ReferenceError
答案
30. 下面代码的输出是什么?
const foo = () => console.log("First");
const bar = () => setTimeout(() => console.log("Second"));
const baz = () => console.log("Third");
bar();
foo();
baz();
复制代码
- A:
First
Second
Third
- B:
First
Third
Second
- C:
Second
First
Third
- D:
Second
Third
First
答案
31. 单击按钮时event.target是什么?
<div onclick="console.log('first div')">
<div onclick="console.log('second div')">
<button onclick="console.log('button')">
Click!
</button>
</div>
</div>
复制代码
- A:
div
外部 - B:
div
内部 - C:
button
- D: 所有嵌套元素的数组.
答案
32. 单击下面的html片段打印的内容是什么?
<div onclick="console.log('div')">
<p onclick="console.log('p')">
Click here!
</p>
</div>
复制代码
- A:
p
div
- B:
div
p
- C:
p
- D:
div
答案
33. 下面代码的输出是什么?
const person = { name: "Lydia" };
function sayHi(age) {
console.log(`${this.name} is ${age}`);
}
sayHi.call(person, 21);
sayHi.bind(person, 21);
复制代码
- A:
undefined is 21
Lydia is 21
- B:
function
function
- C:
Lydia is 21
Lydia is 21
- D:
Lydia is 21
function
答案
34. 下面代码的输出是什么?
function sayHi() {
return (() => 0)();
}
typeof sayHi();
复制代码
- A:
"object"
- B:
"number"
- C:
"function"
- D:
"undefined"
答案
35. 下面这些值哪些是假值?
0;
new Number(0);
("");
(" ");
new Boolean(false);
undefined;
复制代码
- A:
0
,''
,undefined
- B:
0
,new Number(0)
,''
,new Boolean(false)
,undefined
- C:
0
,''
,new Boolean(false)
,undefined
- D: 所有都是假值
答案
36. 下面代码的输出是什么?
console.log(typeof typeof 1);
复制代码
- A:
"number"
- B:
"string"
- C:
"object"
- D:
"undefined"
答案
37. 下面代码的输出是什么?
const numbers = [1, 2, 3];
numbers[10] = 11;
console.log(numbers);
复制代码
- A:
[1, 2, 3, 7 x null, 11]
- B:
[1, 2, 3, 11]
- C:
[1, 2, 3, 7 x empty, 11]
- D:
SyntaxError
答案
38. 下面代码的输出是什么?
(() => {
let x, y;
try {
throw new Error();
} catch (x) {
(x = 1), (y = 2);
console.log(x);
}
console.log(x);
console.log(y);
})();
复制代码
- A:
1
undefined
2
- B:
undefined
undefined
undefined
- C:
1
1
2
- D:
1
undefined
undefined
答案
39. JavaScript中的所有内容都是...
- A:原始或对象
- B:函数或对象
- C:技巧问题!只有对象
- D:数字或对象
答案
40. 下面代码的输出是什么?
[[0, 1], [2, 3]].reduce(
(acc, cur) => {
return acc.concat(cur);
},
[1, 2]
);
复制代码
- A:
[0, 1, 2, 3, 1, 2]
- B:
[6, 1, 2]
- C:
[1, 2, 0, 1, 2, 3]
- D:
[1, 2, 6]
答案
41. 下面代码的输出是什么?
!!null;
!!"";
!!1;
复制代码
- A:
false
true
false
- B:
false
false
true
- C:
false
true
true
- D:
true
true
false
答案
42. setInterval
方法的返回值什么?
setInterval(() => console.log("Hi"), 1000);
复制代码
- A:一个唯一的
id
- B:指定的毫秒数
- C:传递的函数
- D:
undefined
答案
43. 下面代码的返回值是什么?
[..."Lydia"];
复制代码
- A:
["L", "y", "d", "i", "a"]
- B:
["Lydia"]
- C:
[[], "Lydia"]
- D:
[["L", "y", "d", "i", "a"]]
答案
文中如有错误,欢迎在评论区指正,如果这篇文章帮助到了你,欢迎点赞和关注。
想阅读更多优质文章、可关注我的github
博客,你的star✨、点赞和关注是我持续创作的动力!
推荐大家使用Fundebug,一款很好用的BUG监控工具~
推荐关注我的微信公众号【code秘密花园】,每天推送高质量文章,我们一起交流成长。
关注公众号后回复【加群】拉你进入优质前端交流群。
我们是字节跳动互娱研发团队,包含抖音短视频、抖音火山版、TikTok、Faceu、轻颜、剪映等,截止2020年1月,抖音日活(DAU)已经突破4亿,并继续保持高速增长。你会支持产品研发和相关架构工作,每一行代码都能影响亿万用户。
2021 届校招内推码:DRZUM5Z
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK