43道JS面试题
1. 下面代码输出是什么?
function sayHi() {
console.log(name);
console.log(age);
var name = "Lydia";
let age = 21;
}
sayHi();A:
Lydia和undefinedB:
Lydia和ReferenceErrorC:
ReferenceError和21D:
undefined和ReferenceError答案 ```````````` ``````````
关于 let、var和function:
let的’创建’过程被提升了,但是初始化没有提升。var的’创建’和’初始化’都被提升了function的’创建’、’初始化’和’赋值’都被提升了。
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 2and0 1 2B:
0 1 2and3 3 3C:
3 3 3and0 1 2
3. 下面代码的输出是什么?
const shape = {
radius: 10,
diameter() {
return this.radius * 2;
},
perimeter: () => 2 * Math.PI * this.radius
};
shape.diameter();
shape.perimeter();A:
20and62.83185307179586B:
20andNaNC:
20and63D:
NaNand63
4. 下面代码的输出是什么?
+true;
!"Lydia";A:
1andfalseB:
falseandNaNC:
falseandfalse
5. 哪个选项是不正确的?
const bird = {
size: "small"
};
const mouse = {
name: "Mickey",
small: true
};A:
mouse.bird.sizeB:
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:
HelloB:
undefinedC:
ReferenceErrorD:
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);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:
orangeB:
purpleC:
greenD:
TypeError
9. 下面代码的输出是什么?
let greeting;
greetign = {}; // Typo!
console.log(greetign);A:
{}B:
ReferenceError: greetign is not definedC:
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:
undefinedD:
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:
TypeErrorB:
SyntaxErrorC:
Lydia HallieD:
undefined undefined
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"} and undefinedB:
Person {firstName: "Lydia", lastName: "Hallie"} and Person {firstName: "Sarah", lastName: "Smith"}C:
Person {firstName: "Lydia", lastName: "Hallie"} and {}D:
Person {firstName: "Lydia", lastName: "Hallie"} and ReferenceError
13. 所有对象都有原型.
A: 对
B: 错误
14. 下面代码的输出是什么?
function sum(a, b) {
return a + b;
}
sum(1, "2");A:
NaNB:
TypeErrorC:
"12"D:
3
15. 下面代码的输出是什么?
let number = 0;
console.log(number++);
console.log(++number);
console.log(number);A:
1 1 2B:
1 2 2C:
0 2 2D:
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 21C:
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"
19. 事件传播的三个阶段是什么??
A: 目标 > 捕获 > 冒泡
B: 冒泡 > 目标 > 捕获
C: 目标 > 冒泡 > 捕获
D: 捕获 > 目标 > 冒泡
20. 下面代码的输出是什么?
function getAge() {
"use strict";
age = 21;
console.log(age);
}
getAge();A:
21B:
undefinedC:
ReferenceErrorD:
TypeError
21. 下面代码的输出是什么?
const sum = eval("10*10+5");A:
105B:
"105"C:
TypeErrorD:
"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:
8B:
10C:
SyntaxErrorD:
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 trueB:
false true true trueC:
true true false trueD:
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 关键字.
A: 对
B: 错误
C: 视情况而定
27. 下面代码的输出是什么?
for (let i = 1; i < 5; i++) {
if (i === 3) continue;
console.log(i);
}A:
1 2B:
1 2 3C:
1 2 4D:
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 functionC:
SyntaxErrorD:
undefined
29. 下面代码的输出是什么?
const a = {};
const b = { key: "b" };
const c = { key: "c" };
a[b] = 123;
a[c] = 456;
console.log(a[b]);A:
123B:
456C:
undefinedD:
ReferenceError
30. 下面代码的输出是什么?
const foo = () => console.log("First");
const bar = () => setTimeout(() => console.log("Second"));
const baz = () => console.log("Third");
bar();
foo();
baz();A:
FirstSecondThirdB:
FirstThirdSecondC:
SecondFirstThirdD:
SecondThirdFirst
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:
buttonD:
所有嵌套元素的数组.
32. 单击下面的 html 片段打印的内容是什么?
<div onclick="console.log('div')">
<p onclick="console.log('p')">
Click here!
</p>
</div>A:
pdivB:
divpC:
pD:
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 21B:
function functionC:
Lydia is 21 Lydia is 21D:
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, '', undefinedB:
0, new Number(0), '', new Boolean(false), undefinedC:
0, '', new Boolean(false), undefinedD:
所有都是假值
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:
1undefined2B:
undefinedundefinedundefinedC:
112D:
1undefinedundefined
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:
falsetruefalseB:
falsefalsetrueC:
falsetruetrueD:
truetruefalse
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"]]
最后更新于