Показать сообщение отдельно
  #5 (permalink)  
Старый 29.09.2014, 23:46
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

Наверно все не так просто
небольшой пример в котором создается три разных указателя на одну и туже функцию
<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <script type="text/javascript">
	var f_1 = function(name){
		return function() {
			alert("alert, " + name);
		}
	};
	// в переменных v_1,v_2,v_3 сохраняется указатель на функцию
	var v_1 = f_1("Some1"); 
	var v_2 = f_1("Some2");
	var v_3 = f_1("Some3");
    </script>

</head>
<body>
		Вызов функции f_1( ); каждый раз создает отдельное замыкание<br>
		т.к. в функции есть внутренняя функция «return function()» то создается замыкание<br>
		т.е. каждый вызов «f_1 = function(name)» будет сохранять текущий скоп у замкнутой функции<br>
		т.е. в каждом замыкании будет сохранятся(в скопе) параметр name<br>
		пока сохраняется ссылка на внутреннюю функцию<br>
	<input type="button" onclick="v_1()" value="первое замыкание" /><br>
	<input type="button" onclick="v_2()" value="второе замыкание" /><br>
	<input type="button" onclick="v_3()" value="первое замыкание" /><br> 
</body>
</html>

Последний раз редактировалось MallSerg, 29.09.2014 в 23:50.
Ответить с цитированием