JackShcherbakov
@JackShcherbakov

Как компилятор понимает, к чему надо присвоить значение свойства?

Имеется код:
function makeCounter() {
  function counter() {
    return counter.currentCount++;
  };
  counter.currentCount = 1;

  return counter;
}

var counter = makeCounter();
alert( counter() ); // 1

counter.currentCount = 5;     <i> <b>  (*)</b></i>

alert( counter() ); // 5

Вопрос:
У нас есть два объекта с одним именем counter: функция и переменная
В строке (*) мы указываем новое значение объекта counter
Тогда как компилятор понимает о чем идет речь? Почему применяет свойство именно к функции, как задумано, а не к переменной с другой функцией?
Переменная, как и свойства функции, видны везде.

Может ли быть что свойства внутренней функции распространяются на свойства внешней? У нас переменная содержит внешнюю функции, которая содержит в себе функцию со свойством.
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
OTCloud
@OTCloud
Программирование и Архитектура ПО
Что значит как понимает? Вы сделали два раза одно и тоже.
Просто в начале Вы сказали что Counter() - это функция, а когда сделали так var counter = makeCounter(); - Вы сказали, что переменная counter - это функция, у которой есть свойство currentCounter
Я бы сделал так: ( хотя не совсем понял, что Вы тут пытаетесь сделать )

function setCounter ( Number ){
        CurrentCounter = Number;
    	Number++;
    	return CurrentCounter;
    }

    alert( setCounter( 5 ) );  // 5


..., но это сработает, если я понял что Вы пытались сделать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
r0n1x
@r0n1x
html, css, js
Замыкания, функции изнутри. Чтобы не переписывать происходящее =)
Ответ написан
Ваш ответ на вопрос

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

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