@overus

Почему b == number?

Добрый день!

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

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


Почему b тут number? Она не должна быть глобальной, т.к. находится внутри block scope.
  • Вопрос задан
  • 157 просмотров
Решения вопроса 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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы