![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|
|
|||||
|
Регистрация: Aug 2001
Адрес: Москва
Сообщений: 275
|
Добрый день, Флешеры!
Для меня было открытием то, что ActionScript не знает про инкапсуляцию данных. Смотрите i=10; t=20; r=30; r=Fun(i); trace("i="+i+" t="+t+" r="+r); function Fun(i){ i=100; t=200; return r; } TRACE Выдаст : i=10 t=200 r=30 С переменной i - все нормально. Но переменная t, определенная вне функции Fun() внутри этой функции переопеделилась. в строке return r - вообще явная идеологическая ошибка, но Актион Скрипт воспринимает внешние переменные также как и внутрении. Меня это очень сильно удивило и даже разозлило , но что поделаешь, надо придумать ка же с этим бороться Как делать рекурсивный вызов функций ? Ведь кроме передаваемых параметров (которые как видим инкапсулируются, в функции надо сохранять и кучу других промежуточных данных и чтобы при выходе из рекурсии они восстановились.... Как ВЫ делаете рекурсию ??? СПАСИБО БОЛЬШОЕ !!!! |
|
|||||
|
Регистрация: Jun 2001
Адрес: Saint-Petersburg
Сообщений: 116
|
Ставь var, когда определяешь переменные в функции.
|
|
|||||
|
Регистрация: Aug 2001
Адрес: Москва
Сообщений: 275
|
Спасибо вобщем. А я мучался. Думал через массив делать.
СПАСИБО ! |
|
|||||
|
советую для рекурсий использовать arguments.callee
function x() { this.a=arguments; this.i=this.a[0]; if(this.i>10) { return } else { trace(this.i); this.a.callee(this.i++); } } |
![]() |
Часовой пояс GMT +4, время: 22:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|