Показать сообщение отдельно
  #14 (permalink)  
Старый 24.03.2009, 17:38
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,245

function al(o){document.write(o,'<br>')} ;
al(Person) ;//здесь будет указана именованая функция.та, которая была объявлена последней
function Person() { al("zxc")   }   ;
al(Person) ;// та же ботва
var Person = function () {al("123")}; 
al(Person) ;//опаньки.появилась анонимная.ее и пишем
function Person() { al("qqq")   }   ;
al(Person) ; //та же ботва

al('-----------------') ;
	{
	//создали новый контекст исполнения
	al(Person_) ;//нету еще никакой функции
	function Person_() { al("zxc")   }   ;
	al(Person_) ;//каждая новая функция переопределяет старую
	var Person_ = function () {al("123")}; 
	al(Person_) ;//каждая новая функция переопределяет старую
	function Person_() { al("qqq")   }   ;
	al(Person_) ; //каждая новая функция переопределяет старую
	
	}

//судя по всему интепретатор сначала прогоняет глобальный контекст, на предмет наличия именованных функций, и создавая их
//причем в подконтексты он не лезет
//в памяти остается  последняя из именованных функций
//потом неспеша строку за строкой выполняет программу, переопределяя по мере необходимости
//в подконтекстах то же самое, но без предвариловки с именованными функциями

PS IMHO.
Ответить с цитированием