![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
don't panic!
Регистрация: 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. |
|
|
« Предыдущая тема | Следующая тема » |
|
|