Всем привет. Уважаемые знатоки, подскажите пожалуйста, почему в учебном примере ниже при объявлении вложенной функции 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() ); // ""