Как переменная стала функцией?

143
03 июля 2019, 13:40

function makeBuffer() { 
  var text = ''; 
 
  return function(piece) { 
    if (arguments.length == 0) { // вызов без аргументов 
      return text; 
    } 
    text += piece; 
  }; 
}; 
 
var buffer = makeBuffer(); 
 
// добавить значения к буферу 
buffer('Замыкания'); 
buffer(' Использовать'); 
buffer(' Нужно!'); 
alert( buffer() ); // 'Замыкания Использовать Нужно!'

как buffer стала функцией ? если мы в переменную возвращаем функцию она становится функцией ? Если да, то это fynction expression ?

Answer 1

В переменную buffer записано значение которое вернется из функции makeBuffer, а из функции makeBuffer возвращается функция. И, да, это замыкание.

А еще этот пример можно записать так:

var buffer = function() { 
	var text = ''; 
 
	return function(piece) { 
		if (arguments.length == 0) { // вызов без аргументов 
			return text; 
		} 
		text += piece; 
	} 
}(); 
 
// добавить значения к буферу 
buffer('Замыкания'); 
buffer(' Использовать'); 
buffer(' Нужно!'); 
alert(buffer()); // 'Замыкания Использовать Нужно!'

READ ALSO
Помогите с “SyntaxError: Unexpected token < in JSON at position ”

Помогите с “SyntaxError: Unexpected token < in JSON at position ”

Я не очень разбираюсьВозникает ошибка при загрузке изображений

118
Как делать POST запрос c Axios(Vue)?

Как делать POST запрос c Axios(Vue)?

Как правильно делать POST запрос с Axios

155
Count в связке с group_by

Count в связке с group_by

Подскажите почему такие неожиданные результаты выдает запрос?

123
Что означает `st1` и `st2` в данном примере?

Что означает `st1` и `st2` в данном примере?

Finding Rows with the Maximum Value of a Column by Group

146