Я участвую в рейтинге популярных авторов Nuggets, пожалуйста, проголосуйте за ConardLi, спасибо🙏rank.juejin.cn/?u=ConardLi
Управляемое чтение
эти два дняGitHub Trending repositories
названныйjavascript-questions
Проект доминировал в списке, и некоторые проекты были записаныJavaScript
тема.
Прочитал от начала и до конца, все вопросы основные, я потратил примерно полчаса (некоторые вопросы очень простые и их можно сметать) чтобы закончить эти вопросы, хотя вопросы очень простые, но каждый вопрос Все они соответствуют точке знаний.Если вы не коснулись этой точки знаний, вы обязательно сделаете что-то не так.Если вы связались с этими точками знаний, то эти вопросы будут для вас легкими.
Рекомендуется также потратить на это полчаса, чтобы проверить пробелы и заполнить пробелы.
Для того, чтобы всем было проще делать вопросы быстрее и не тратить время на перевод, я потратил несколько часов, переводя их на китайский язык, естественно, я получил авторизацию автора.
Некоторые моменты в статье раскрыты автором не полностью, для лучшего понимания я добавил в статью некоторые личные пояснения.
Адрес склада:GitHub.com/Лидия Холли ...
Список расширенных вопросов по 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
Отвечать
Ответ: Д
В функции мы сначала используемvar
объявлено ключевое словоname
Переменная. Это означает, что переменные поднимаются на этапе создания (JavaScript
выделит для него место в памяти на этапе создания переменной), значение по умолчанию равноundefined
, пока мы не дойдем до строки, в которой используется переменная. у нас нетname
присвоение переменной, так что она все еще остаетсяundefined
ценность .
использоватьlet
ключевые слова (иconst
) объявленные переменные также будут иметь продвижение переменных, но не такое, какvar
В отличие от, инициализация не повышена. Они недоступны, пока мы их не объявим (инициализируем). Это называется «временной мертвой зоной». Когда мы пытаемся получить доступ к переменной перед ее объявлением,JavaScript
броситReferenceError
.
Примечание переводчика:
оlet
Существует ли переменное продвижение для , как мы можем использовать следующий пример для проверки:
let name = 'ConardLi'
{
console.log(name) // Uncaught ReferenceError: name is not defined
let name = 'code秘密花园'
}
let
Переменная Если нет переменной акции,console.log(name)
будет выводитьConardLi
, который бросаетReferenceError
, то это хорошая иллюстрация,let
Подъем переменных также существует, но у него есть «временная мертвая зона», которая не разрешает доступ, пока переменная не будет деинициализирована или ей не будет присвоено значение.
Присвоение переменных можно разделить на три этапа:
- Создавайте переменные, освобождайте место в памяти
- инициализировать переменную, инициализировать переменную как
undefined
- истинное назначение
о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 2
and0 1 2
- B:
0 1 2
and3 3 3
- C:
3 3 3
and0 1 2
Отвечать
Ответ: С
из-заJavaScript
механизм выполнения события вsetTimeout
Когда функция действительно выполняется, цикл завершается. Из-за переменной в первом циклеi
это использоватьvar
ключевое слово, поэтому значение является глобальным. Во время цикла мы используем унарный оператор каждый раз++
будетi
увеличение стоимости1
. Итак, в первом примере при вызовеsetTimeout
функция,i
был назначен как3
.
Во втором цикле используйтеlet
переменная объявления ключевого словаi
:использоватьlet
(а такжеconst
) переменные, объявленные ключевым словом, имеют блочную область видимости (блоки{}
что-то между). Во время каждой итерацииi
будет создано как новое значение, и каждое значение будет существовать в области блока внутри цикла.
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
Отвечать
Ответ: Б
осторожность,diameter
является обычной функцией, иperimeter
является стрелочной функцией.
Для стрелочных функцийthis
Ключевое слово указывает на среду, которая является его контекстом (где оно было определено), в отличие от обычной функции! Это означает, что когда мы вызываемperimeter
когда не указывает наshape
Объект, но относится к среде (окну), в которой он определен. неважноradius
имущество, возвратundefined
.
4. Что выводит следующий код?
+true;
!"Lydia";
- A:
1
andfalse
- B:
false
andNaN
- C:
false
andfalse
Отвечать
Ответ: А
Unary Plus попытается поставитьboolean
Преобразование типа в числовой тип.true
преобразуется в1
,false
преобразуется в0
.
нить'Lydia'
является значением истины. На самом деле мы спрашиваем: «Является ли это истинностное значение ложным?». это возвращаетfalse
.
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
Отвечать
Ответ: А
существуетJavaScript
Во всех объектах ключи являются строками (кромеSymbol
). Хотя иногда нам не могут быть предоставлены строковые типы, они всегда преобразуются в строки.
JavaScript
объясните заявление. Когда мы используем запись с квадратными скобками, она видит первую левую скобку[
, и продолжайте, пока не найдете закрывающую скобку]
. Только тогда он будет оценивать заявление.
mouse [bird.size]
: сначала будетbird.size
оценить, получитьsmall
.mouse [“small”]
вернутьtrue
.
Однако при точечной записи этого не происходит.mouse
без имениbird
ключ, значитmouse.bird
даundefined
. Затем мы используем запись через точку, чтобы спроситьsize
:mouse.bird.size
. из-заmouse.bird
даundefined
, мы на самом деле спрашиваемundefined.size
. Это недопустимо и выкинетCannot read property "size" of undefined
.
6. Что выводит следующий код?
let c = { greeting: "Hey!" };
let d;
d = c;
c.greeting = "Hello";
console.log(d.greeting);
- A:
Hello
- B:
undefined
- C:
ReferenceError
- D:
TypeError
Отвечать
Ответ: А
существуетJavaScript
, все объекты взаимодействуют по ссылке, когда они установлены равными друг другу.
Во-первых, переменнаяc
Содержит значение для объекта. После этого мы будемd
Назначен какc
Та же ссылка, что и объект.
Когда вы изменяете один объект, вы можете изменить все объекты.
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
Отвечать
Ответ: С
new Number()
является встроенным конструктором функций. Хотя это выглядит как число, на самом деле это не число: оно имеет кучу дополнительных функций и является объектом.
когда мы используем==
оператор, он просто проверяет, имеет ли он то же значение. у них у всех есть3
значение, поэтому он возвращаетtrue
.
Примечание переводчика:
==
вызовет неявное преобразование типа, а тип объекта справа автоматически распаковывается какNumber
Типы.
Однако, когда мы используем===
оператор, и тип, и значение должны быть равны,new Number()
Не число, а тип объекта. оба возвращаютсяfalse
.
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
Отвечать
Ответ: Д
colorChange
Методы статичны. Статические методы существуют только в конструкторе, который их создает, и не могут быть переданы никаким дочерним элементам. из-заfreddie
является дочерним объектом, функция не передается, поэтому вfreddie
не существует в экземпляреfreddie
метод: броситьTypeError
.
9. Что выводит следующий код?
let greeting;
greetign = {}; // Typo!
console.log(greetign);
- A:
{}
- B:
ReferenceError: greetign is not defined
- C:
undefined
Отвечать
Ответ: А
Консоль выводит пустые объекты, потому что мы только что создали пустой объект для глобального объекта! когда мы по ошибкеgreeting
Введите какgreetign
, интерпретатор JS на самом деле видит его в браузере какglobal.greetign = {}
(илиwindow.greetign = {}
).
Чтобы избежать этого, мы можем использовать“use strict”
. Это гарантирует, что переменная должна быть объявлена до присвоения ей значения.
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
Отвечать
Ответ: А
это вJavaScript
возможно, потому что функции тоже являются объектами! (все, кроме примитивных типов, является объектом)
Функция — это особый тип объекта. Код, который вы пишете сами, не является реальной функцией. Функция — это объект со свойствами, и это свойство можно вызывать.
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 = function () {
return `${this.firstName} ${this.lastName}`;
}
Это сделаетmember.getFullName()
доступно и почему это правильно? Допустим, мы добавляем этот метод в сам конструктор. может не каждыйPerson
Экземпляры требуют этого метода. Это тратит впустую много места в памяти, потому что у них все еще есть это свойство, которое занимает место в памяти для каждого экземпляра. Вместо этого, если бы мы добавили его только в прототип, мы бы просто поместили его в одно место в памяти, но все они имели бы к нему доступ!
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
Отвечать
Ответ: А
дляsarah
, мы не использовалиnew
ключевые слова. использоватьnew
, это относится к новому пустому объекту, который мы создали. Однако, если вы не добавитеnew
Он относится к глобальному объекту!
мы указалиthis.firstName
равный'Sarah
а такжеthis.lastName
равныйSmith
. Что мы на самом деле делаем, так это определяемglobal.firstName ='Sarah'
а такжеglobal.lastName ='Smith
.sarah
Само возвращаемое значениеundefined
.
12. Какие три этапа распространения события? ?
- A: Цель > Захват > Пузырь
- B: Всплывание> Цель> Захват
- C: Цель> Пузырьковый> Захват
- D: Захват> Цель> Пузырь
Отвечать
Ответ: Д
На этапе захвата события передаются через родительский элемент целевому элементу. Затем он достигает целевого элемента и начинается всплытие.
13. Все объекты имеют прототипы.
- О: Да
- Б: неправильно
Отвечать
Ответ: Б
Удалитьбазовый объектКроме того, все объекты имеют прототипы. Базовый объект имеет доступ к определенным методам и свойствам, таким как.toString
. Вот как вы можете использовать встроенныйJavaScript
Причина метода! Все эти методы можно найти на прототипе. несмотря на то чтоJavaScript
Его нельзя найти непосредственно на вашем объекте, но он просматривает цепочку прототипов и находит его там, что дает вам доступ к нему.
Примечание переводчика: базовый объект относится к объекту в конце цепочки прототипов. Прототип базового объектаnull
.
14. Что выводит следующий код?
function sum(a, b) {
return a + b;
}
sum(1, "2");
- A:
NaN
- B:
TypeError
- C:
"12"
- D:
3
Отвечать
Ответ: С
JavaScript
этоязык с динамической типизацией: Мы не указали тип некоторых переменных. Значение может быть автоматически преобразовано в другой тип без вашего ведома, что называется неявным преобразованием типа.обязательныйПреобразование из одного типа в другой.
В этом примереJavaScript
поставь цифры1
Преобразуйте в строку, чтобы функция имела смысл и возвращала значение. Если числовой тип (1
) И строковые типы ('2'
) При добавлении число считается строкой. Мы можем подключить“Hello”+“World”
такая строка, так что здесь происходит“1”+“2”
вернуть“12”
.
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
Отвечать
Ответ: С
суффиксунарный оператор++
:
- возвращаемое значение (возврат
0
) - Добавленная стоимость (число теперь
1
)
приставкаунарный оператор++
:
- Добавленная стоимость (число теперь
2
) - возвращаемое значение (возврат
2
)
так что возвращайся0 2 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
Отвечать
Ответ: С
При сравнении на равенство примитивные типы сравниваются по их значениям, а объекты сравниваются по их ссылкам.JavaScript
Проверяет, есть ли у объекта ссылка на то же место в памяти.
Объект, который мы передаем в качестве параметра, и объект, который мы используем для проверки равенства, находятся в разных местах памяти, поэтому их ссылки различны.
поэтому{ age: 18 } === { age: 18 }
а также{ age: 18 } == { age: 18 }
вернутьfalse
причина.
18. Что выводит следующий код?
function getAge(...args) {
console.log(typeof args);
}
getAge(21);
- A:
"number"
- B:
"array"
- C:
"object"
- D:
"NaN"
Отвечать
Ответ: С
оператор спреда (... args
) возвращает массив с параметрами. Массив - это объект, поэтомуtypeof args
вернутьobject
.
20. Что выводит следующий код?
function getAge() {
"use strict";
age = 21;
console.log(age);
}
getAge();
- A:
21
- B:
undefined
- C:
ReferenceError
- D:
TypeError
Отвечать
Ответ: С
использовать“use strict”
, что гарантирует, что глобальные переменные не будут объявлены случайно. мы никогда не объявляем переменнуюage
, потому что мы используем ``use strict',它会引发一个
ReferenceError。 如果我们不使用
"использовать строгий",它就会起作用,因为属性
age` будет добавлен к глобальному объекту.
21. Что выводит следующий код?
const sum = eval("10*10+5");
- A:
105
- B:
"105"
- C:
TypeError
- D:
"10*10+5"
Отвечать
Ответ: А
eval
будет оценивать код, переданный в строке. Если это выражение, как в данном случае, оно вычисляет выражение. Выражение10 * 10 + 5
Рассчитано105
.
22. Как долго можно использовать cool_secret?
sessionStorage.setItem("cool_secret", 123);
- A: Навсегда данные не будут потеряны.
- B: Когда пользователь закрывает вкладку.
- C: Когда пользователь закрывает весь браузер, а не только вкладки.
- D: Когда пользователь выключает компьютер.
Отвечать
Ответ: Б
После закрытия вкладки удаления сохраняются вsessionStorage
данные в .
При использованииlocalStorage
Данные всегда будут там, если только, например, звонокlocalStorage.clear()
.
23. Что выводит следующий код?
var num = 8;
var num = 10;
console.log(num);
- A:
8
- B:
10
- C:
SyntaxError
- D:
ReferenceError
Отвечать
Ответ: Б
использоватьvar
ключевое слово, вы можете объявить несколько переменных с одним и тем же именем. Затем переменная будет содержать последнее значение.
ты не можешь использоватьlet
илиconst
для достижения этого, потому что они имеют блочную область видимости.
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
Отвечать
Ответ: С
Все ключи объекта (за исключениемSymbols
) хранятся в виде строк, даже если вы не указываете ключ строкового типа. поэтомуobj.hasOwnProperty('1')
также вернутьсяtrue
.
Вышеприведенное утверждение не относитсяSet
. в нашемSet
Нет в“1”
:set.has('1')
вернутьfalse
. он имеет числовой тип1
,set.has(1)
вернуть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
Отвечать
Ответ: С
если условие возвращаетсяtrue
,ноcontinue
Оператор пропускает итерацию.
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
Отвечать
Ответ: А
String
— это встроенный конструктор, к которому мы можем добавлять свойства. Я просто добавил метод к его прототипу. Строки примитивных типов автоматически преобразуются в строковые объекты, генерируемые функциями-прототипами строк. Таким образом, все строки (строковые объекты) имеют доступ к методу!
Примечание переводчика:
При вызове со строкой примитивного типаgiveLydiaPizza
, на самом деле происходит следующий процесс:
- Создавать
String
экземпляр типа оболочки - вызов по инстанции
substring
метод - уничтожить экземпляр
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
Отвечать
Ответ: Б
Ключи объекта автоматически преобразуются в строки. Мы пытаемся установить объект на объектa
ключ, значение которого123
.
Однако, когда объект автоматически преобразуется в строку, он становится[Object object]
. Так что мы говорим здесьa["Object object"] = 123
. Затем мы можем попытаться сделать то же самое снова.c
Объекты также подвергаются неявным преобразованиям типов. Так,a["Object object"] = 456
.
Затем мы печатаемa[b]
, это на самом делеa["Object object"]
. мы установили его на456
, так что возвращайся456
.
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
Отвечать
Ответ: Б
у нас естьsetTimeout
функцию и вызовите ее первой. Однако в итоге напечатал.
Это связано с тем, что в браузерах у нас есть не только исполняющий движок, но иWebAPI
с вещами.WebAPI
предоставляет намsetTimeout
функции, такие какDOM
.
Будуcallback
подтолкнуть кWebAPI
назад,setTimeout
Сама функция (но не обратный вызов!) выталкивается из стека.
Теперь позвониfoo
, и распечататьFirst
.
foo
вытащить из стека,baz
вызывается и печатаетThird
.
WebAPI
Вы не можете просто добавить материал в стек, когда он будет готов. Вместо этого он помещает функцию обратного вызова в任务队列
с вещами.
Здесь начинает работать цикл событий.цикл событийПросмотр стеков и очередей задач. Если стек пуст, первое содержимое в очереди берется и помещается в стек.
bar
называется,Second
печатается, он извлекается из стека.
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: Массив всех вложенных элементов.
Отвечать
Ответ: С
Глубоко вложенный элемент, вызывающий событие, является целью события. ты можешь пройтиevent.stopPropagation
перестань пузыриться
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
Отвечать
Ответ: А
если мы нажмемp
, мы увидим два лога:p
а такжеdiv
. Во время распространения события есть три фазы: захват, цель и всплытие. По умолчанию обработчики событий выполняются на этапе всплытия (если вы не установилиuseCapture
Установить какtrue
). Он простирается наружу от самого глубокого вложенного элемента.
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
Отвечать
Ответ: Д
Используя оба, мы можем передать то, что хотимthis
Объект, на который ссылается ключевое слово. но,.call
Метод будет выполнен немедленно!
.bind
Метод возвращает копию функции, но с привязанным контекстом! Он не выполняется сразу.
34. Что выводит следующий код?
function sayHi() {
return (() => 0)();
}
typeof sayHi();
- A:
"object"
- B:
"number"
- C:
"function"
- D:
"undefined"
Отвечать
Ответ: Б
sayHi
функция возвращает функцию, которая вызывается немедленно (IIFE
) Возвращаемое значение. Функция возвращает0
, тип数字
.
К вашему сведению: есть только 7 встроенных типов:null
,undefined
,boolean
,number
,string
,object
а такжеsymbol
.function
не является типом, так как функция является объектом, ее типobject
.
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: все ложные значения
Отвечать
Ответ: А
JavaScript
Всего 6 ложных значений в:
undefined
null
NaN
0
-
''
(empty string) false
конструктор функций, напримерnew Number
а такжеnew Boolean
являются истинными ценностями.
36. Что выводит следующий код?
console.log(typeof typeof 1);
- A:
"number"
- B:
"string"
- C:
"object"
- D:
"undefined"
Отвечать
Ответ: Б
typeof 1
вернуть"number"
.
typeof "number"
вернуть"string"
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
Отвечать
Ответ: С
Когда вы присваиваете элементу массива значение, превышающее длину массива,JavaScript
создаст что-то под названием «пустой слот». Значения в этих местах на самом делеundefined
, но вы увидите что-то вроде:
[1, 2, 3, 7 x empty, 11]
Это зависит от того, где вы его запускаете (может быть по-разному для каждого браузера).
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
Отвечать
Ответ: А
catch
блокировать параметры приемаx
. Когда мы передаем параметры, это то же самое, что и переменнаяx
разные. эта переменнаяx
принадлежатьcatch
ограниченный.
После этого мы устанавливаем эту блочную переменную в1
, и установите переменнуюy
ценность . Теперь мы печатаем переменные области видимости блокаx
, что равно1
.
существуетcatch
вне блока,x
все ещеundefined
,а такжеy
да2
. когда мы хотимcatch
вне блокаconsole.log(x)
когда он вернетсяundefined
,а такжеy
вернуть2
.
39. Все в JavaScript это ...
- A: Примитив или объект
- B: функция или объект
- C: Вопрос о навыках! только объекты
- D: число или объект
Отвечать
Ответ: А
JavaScript
Только примитивные типы и объекты.
Примитивный типboolean
,null
,undefined
,bigint
,number
,string
а такжеsymbol
.
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]
Отвечать
Ответ: С
[1,2]
наше начальное значение. Здесь мы начинаемreduce
начальное значение функции и первоеacc
ценность . В первом раундеacc
да[1,2]
,cur
да[0,1]
. Соединяем их и получается[1,2,0,1]
.
Потом,acc
ценность[1,2,0,1]
,cur
ценность[2,3]
. Соединяем их и получаем[1,2,0,1,2,3]
.
41. Что выводит следующий код?
!!null;
!!"";
!!1;
- A:
false
true
false
- B:
false
false
true
- C:
false
true
true
- D:
true
true
false
Отвечать
Ответ: Б
null
является ложным значением.!null
вернутьtrue
.!true
вернутьfalse
.
""
является ложным значением.!""
вернутьtrue
.!true
вернутьfalse
.
1
является истинностным значением.!1
вернутьfalse
.!false
вернутьtrue
.
42. setInterval
Каково возвращаемое значение метода?
setInterval(() => console.log("Hi"), 1000);
- А: уникальный
id
- B: указанное количество миллисекунд
- C: переданная функция
- Д:
undefined
Отвечать
Ответ: А
он возвращает уникальныйid
. этоid
доступен для использованияclearInterval()
Функция очищает таймер.
43. Каково возвращаемое значение кода ниже?
[..."Lydia"];
- A:
["L", "y", "d", "i", "a"]
- B:
["Lydia"]
- C:
[[], "Lydia"]
- D:
[["L", "y", "d", "i", "a"]]
Отвечать
Ответ: А
Строки повторяемы. Оператор распространения сопоставляет каждый повторяемый символ элементу.
резюме
Если в статье есть ошибки, исправьте их в комментариях, если статья вам поможет, ставьте лайк и подписывайтесь.
Если вы хотите читать больше качественных статей, вы можете подписаться на меняgithub
блог, твоя звезда✨, лайки и внимание - движущая сила моего постоянного творчества!
Рекомендую обратить внимание на мой паблик WeChat [code secret garden], каждый день выкладывать качественные статьи, будем общаться и расти вместе.
Мы являемся научно-исследовательской командой ByteDance Interactive Entertainment, включая Douyin Short Video, Douyin Volcano, TikTok, Faceu, Qingyan, Jianying и т. д. По состоянию на январь 2020 года Douyin Daily Active (DAU) превысил 400 миллионов человек и продолжает поддерживать быстрый рост. . Вы будете поддерживать разработку продуктов и связанные с ними архитектурные работы, где каждая строка кода может повлиять на сотни миллионов пользователей.
Код набора в школу 2021:DRZUM5Z
Официальный сайт доставки:job.toutiao.com/s/JR8SthH