Задать вопрос
@overus

Почему b == number?

Добрый день!

if(true) {
	let a = b = 200;
}

console.log( typeof a ); // undefined
console.log( typeof b ); // number


Почему b тут number? Она не должна быть глобальной, т.к. находится внутри block scope.
  • Вопрос задан
  • 162 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 3
@MagicMight
no magic quotes
Ты присваиваешь локальной переменной a ссылку на глобальное свойство window.b, которое создаешь в этой же строчке.
Ключевое слово let тут применяется только к a
Ответ написан
Комментировать
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Потому что это эквивалентно let a = (b = 200);
b — устанавливается как глобальная переменная
Ответ написан
Комментировать
potapchino
@potapchino
потому что на самом деле ваш код выглядит вот так:
var b;

if(true) {
  let a = b = 200;
}

console.log( typeof a ); // undefined
console.log( typeof b ); // number


чтобы было как вы ожидаете, нужно сделать вот так:
if(true) {
  let b;
  let a = b = 200;
}

console.log( typeof a ); // undefined
console.log( typeof b ); // undefined
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы