43 вопроса о собеседовании по JavaScript для вас

JavaScript опрос

Я участвую в рейтинге популярных авторов 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 and 0 1 2
  • B: 0 1 2 and 3 3 3
  • C: 3 3 3 and 0 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 and 62.83185307179586
  • B: 20 and NaN
  • C: 20 and 63
  • D: NaN and 63
Отвечать

Ответ: Б

осторожность,diameterявляется обычной функцией, иperimeterявляется стрелочной функцией.

Для стрелочных функцийthisКлючевое слово указывает на среду, которая является его контекстом (где оно было определено), в отличие от обычной функции! Это означает, что когда мы вызываемperimeterкогда не указывает наshapeОбъект, но относится к среде (окну), в которой он определен. неважноradiusимущество, возвратundefined.


4. Что выводит следующий код?

+true;
!"Lydia";
  • A: 1 and false
  • B: false and NaN
  • C: false and false
Отвечать

Ответ: А

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"} and undefined
  • B: 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
Отвечать

Ответ: А

для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
Отвечать

Ответ: С

суффиксунарный оператор++:

  1. возвращаемое значение (возврат0)
  2. Добавленная стоимость (число теперь1)

приставкаунарный оператор++:

  1. Добавленная стоимость (число теперь2)
  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