Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 26.04.2002, 01:27
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 28  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
до завтра я не дотерпел :))

знчт так, по порядку... (а то мало ли кто-то еще кроме нас это читает :D )

о чем спор:
– одна функция создает другую
– функция, которая создается зависит от параметра функции создающей

я утверждаю: во внутренней функции происходят подстановки значений на место параметра в момент создания
ты утверждаешь: эти подстановки происходят в момент выполнения

отуда я взял свое:
Код:
o["Nox"] = "Nox is right !";
o["john"] = "john is right !";
function external(param) {
	var p = param;
	var internal = function (msg) {		
		var test = o[p];
		trace(msg+" :: "+test);
	};	
	return internal;
}
getInternal = external("Nox");
getInternal("What's up ?!");
что делаем:
– создаем функцию и возвращаем на нее ссылку.
– вызываем ее:
поскольку внешняя функция закончила работу, то параметр param больше не существует => по твоей логике мы должны во время выполнения функции getInternal получить var test = o[undefined]; , потому как переменную 'p' взять уже неоткуда, так ведь ?
....но вместо undefined мы получаем то, что нужно !

и все было бы замечательно, если бы не другой тест:
Код:
o["Nox"] = "Nox is right !";
o["john"] = "john is right !";
function external(param) {
	var p = param;
	var internal = function (msg) {		
		var test = o[p];
		trace(msg+" :: "+test);
	};
	var p = "john";
	return internal;
}
getInternal = external("Nox");
getInternal("What's up ?!");
эээ... либо я чего-то не понимаю, либо одно из двух:
мы меняем переменную уже _после_ объявления функции, а получаем....

ну, хорошо... есть ведь замычательная функция delete:
напишем delete p; перед ретурном во внешней функции...
результат тот же, что и в первом варианте !

ладно, отвлечемся от главной темы - а работает ли делет, если его так использовать ?
Код:
function deleteTest(param) {
	var testVar = param;
	var backUp = param;
	trace("thing to kill :: "+testVar);
	delete testVar;
	trace("is it deleted ?! :: "+((testVar != backUp) ? "YEAH" : "NO"));
}
deleteTest("delete me !");
ммм... не работает...

что-то я перестаю что-либо понимать...

скажи мне в чем сила, брат ? :))))

Создать новую тему   Часовой пояс GMT +4, время: 09:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:29.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.