|
AmiSite.ru
Форум по Ами |
Автор |
Сообщение |
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
Никогда раньше не сталкивался с проблемой видимости переменных и как-то не задумывался об этом, считая само собой разумеющимся, что облать видимости переменной ограничена функцией или логическим блоком, в которых она объявлена. Но сегодня набросал один код, в котором в цикле вызывается пользовательская функция, внутри которой тоже есть цикл, и столкнулся вот с такой неприятной особенностью:
Код: |
1. function SomeFunc()
2. {
3. A = 0;
4.
5. for(i = 0; i < BarCount; i++)
6. A[i] = ...; //что-то считаем
7.
8. return A;
9. }
10.
11. for(i = 0; i < 10; i++)
12. {
13. SomeFunc();
14. // здесь i == BarCount-1 на первой же итерации!!!
15. }
|
После вызова функции в строке 13 значение i становится равным BarCount-1, т.е. эта переменная является глобальной и меняется из любой функции, из любого участка кода! А что, ограничить её область видимости функцией или логическим блоком никак? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Если переменная декларируется не в функции, то она глобальная.
Набери в поиске хелпера global Keyword Там нормально описано. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Mechanic
Зарегистрирован: 10.06.2008
Сообщения: 359
|
Спасибо. Оказывается, надо просто в функции объявить i с ключевым словом local. Не знал о нём. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
| |