Показать сообщение отдельно
  #1 (permalink)  
Старый 15.10.2018, 18:34
Новичок на форуме
Отправить личное сообщение для ytil Посмотреть профиль Найти все сообщения от ytil
 
Регистрация: 15.10.2018
Сообщений: 8

Вызов вложенной функции объявленной без ключевого слова var
Всем привет. Уважаемые знатоки, подскажите пожалуйста, почему в учебном примере ниже при объявлении вложенной функции buffer.clear не используется ключевое слово var. И почему если его все таки испорльзовать то функция перестает быть доступной из глобальной области видимости.

З.Ы. Также не понимаю, почему функция buffer.clear вообще является доступной из global, ведь она является переменной функции makeBuffer и должна иметь возможность вызываться только в пределах этой функции?

function makeBuffer() {
  var text = '';

  function buffer(piece) {
    if (arguments.length == 0) { // вызов без аргументов
      return text;
    }
    text += piece;
  };

  buffer.clear = function() {
    text = "";
  }

  return buffer;
};

var buffer = makeBuffer();

buffer("Тест");
buffer(" тебя не съест ");
alert( buffer() ); // Тест тебя не съест

buffer.clear();

alert( buffer() ); // ""
Ответить с цитированием