155 основных вопросов по JavaScript (1-5)

внешний интерфейс
155 основных вопросов по JavaScript (1-5)

1. Что на выходе?

function sayHi() {
  console.log(name)
  console.log(age)
  var name = 'Lydia'
  let age = 21
}

sayHi()

Ответ: undefined и ошибка Поскольку переменная, определенная с помощью var, имеет эффект продвижения переменной, но это только продвижение объявления переменной без присвоения, поэтому оно не определено.Объявление переменной, определенное с помощью let, будет повышено, но не будет инициализировано. инициализация сообщит об ошибке, которая является временной мертвой зоной.

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)
}

Ответы: 333 и 012, из-за механизма циклов событий JS setTimeout является макрозадачей, и она не может быть выполнена до тех пор, пока не будет выполнен код синхронизации. var определяет здесь глобальную переменную, поэтому после выполнения кода синхронизации, i стал 3, поэтому печатаются 3 3, но переменные, определенные let, образуют область блока, поэтому 0 1 2

3. Что на выходе?

const shape = {
  radius: 10,
  diameter() {
    return this.radius * 2
  },
  perimeter: () => 2 * Math.PI * this.radius
}

shape.diameter()
shape.perimeter()

Ответ: Вывод равен 20 и NaN, потому что это в диаметре относится к радиусу в форме, но поскольку периметр является стрелочной функцией, когда мы вызываем периметр, это указывает не на объект формы, а на окружающую его область (в окне в пример).

4. Что на выходе?

+true;
!"Lydia";

Решение: Знак + превращается в истину в 1, знак + имеет тенденцию возвращать значение, но ! имеет тенденцию возвращать логическое значение, потому что «Лидия» реальна, поэтому отрицание ложно.

5. Какой из них правильный?

const bird = {
  size: 'small'
}
const mouse = {
  name: 'Mickey',
  small: true
}

Ответ: A, потому что предпосылка вызова мыши птицей в виде точек заключается в том, что у мыши есть этот атрибут, но у нее его нет, поэтому он недействителен, но bird.size реален, а строка small хранится в [] call , это то же самое, что и вариант C. Точно так же это означает, что утверждение D неверно, поэтому выберите A для этого вопроса.