Получается, что нет: 
	
alert(
(function(a, b) {
	return new Function('return a + b;');
})(5, 6)()
);
происходит ошибка, если бы функция создаваемая через "new Function" запоминала "a" и "b", то вывелось бы 11, как здесь: 
alert(
(function(a, b) {
	return function() {return a + b};
})(5, 6)()
);
 | 
	
		
 Цитата: 
	
 В статье про замыкания есть такой код: 
function addEvents2(divs) {
    for(var i=0; i<divs.length; i++) {    
        divs[i].innerHTML = i
        divs[i].onclick = function(x) {
            return function() { alert(x) }
        }(i)
    }
}
Т.е. как я понял,временная функция, после исполнения, возвращает уже функцию-обработчик, которая не использует внешних [[scope]] и, соответственно, нет никакого замыкания... Хоть бы это было так:)  | 
	
		
 Цитата: 
	
 
alert(
(function() {
    return new Function('a','b','return a + b;');
})()(5, 6)
);
 | 
	
		
 Как же нет, "x" то он (обработчик) запомнил, кроме того внутри видны "i" и "divs". 
	 | 
	
		
 ZoNT, 
	и что, где функция созданная через "new Function" запомнила что-то замыканием?  | 
	
		
 Функция через new Function ничего не запоминает, так как формат её создания не подразумевает передачи в неё каких-либо ссылок... 
	 | 
	
		
 Цитата: 
	
 :help:  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
 
alert(
(function(a, b) {
    return new Function('return ' + a + ' + ' + b + ';');
})(5, 6)()
);
 | 
	
		
 Это всё понятно... как передать внешнюю переменную в создаваемую ф-цию, не оставляя ссылки на scope?! Может можно как-то через prototype решить... Ну или в заранее созданную... 
	 | 
| Часовой пояс GMT +3, время: 08:16. |