Nikulio
@Nikulio
NaN !== NaN

"Приватные переменные" в конструкторах — принцип работы?

Всем привет
Не совсем понимаю, почему не могу тут напрямую достучаться до переменной (за совет "иди почитай замыкания" - заранее спасибо).
function Test () {
	var a = 10;
	let b = 12;
	this.c = 14;
}

var test = new Test();
test.a


Ведь мы создаём новую лекс. видимость при вызове new, а var a находиться в видимости Test(). Почему тогда undefined?
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Находится в о области видимости !== связана с экземпляром класса, что тут ещё сказать? Так язык работает.

Вас же, наверное, не удивляет, что такой код работать не будет?
function foo () {
  var a = 10;
  let b = 12;
  return 14;
}

var bar = foo();
bar.a // undefined

Почему конструктор должен себя иначе вести?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Jumandjilos
Насчет замыканий, сам себе считай дал отличный совет) Но попробую объяснить: а - это локальная переменная функции Test, из глобальной области видимости нельзя получить к ней доступ. Вот к с ты бы мог обратиться, т.к. есть ссылка this.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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