Разделы
- 1. Введение
- 2. Описание языка
- 3. Интерфейс программирования приложений (API)
- 3.1. Стек
- 3.2. Резервация памяти
- 3.3. Сообщения
- 3.4. Типы данных
- 3.5. Функции
- 3.5.1. Базовые функции скриптоввой системы
- 3.5.2. Функции для вставки на вершину стека значения
- 3.5.3. Перевод значений со стека в скриптовую ситему (экспорт (stack => script))
- 3.5.4. Функции для получения со стека (stack => C(++))
- 3.5.5. Функции для работы с аргументами в вызванной C(++) функции из скриптовой системы (script => C(++) function)
- 3.5.6. Функции отладки (DEBUG)
- 3.5.7. Функции для работы с препроцессом
- 4. Стандартная библиотека
2.8.4. Области видимости
При объявлении/инициализации переменной в первую очередь происходит поиск переменной во всех доступных контекстах. Если переменная была найдена то она будет помещена на вершину стека (значение находится в переменной посредством идентификатора значения), если переменная не найдена то она будет создана в текущем контексте, ее значением будет null
, и она будет помещена на вершину стека.
С таблицами аналогичная ситуация, однако поиск и создание будут происходить только в таблице. Поэтому ниже приведенный пример будет бессмыленен:
$a = 10; if(a > 0){ $a = 11; }
Примечание: данный пример с точки зрения исполнения машиной является неверным!
Ибо переменная a
объявлена вне условия, а внутри условия внешняя переменная a
просто будет изменена.
Переменные созданные в конструкциях (if
, for
, while
, do while
), блоках и функциях, не доступны вне их.