Добавляем...


  Глобальные и локальные переменные
Для большинства разработчиков программ на JavaScript имеются только две основные области видимости - глобальная и локальная. Глобальная переменная доступна ("видима") во всем документе, а локальная - ограничена рамками блока программного кода, внутри которого она определена. Тело функции имеет собственную локальную область видимости. Например, в следующем сценарии переменная х определена глобально и доступна в функции myFunct ion, где ее значение можно и установить, и вывести на экран.

// Определим х глобально var х = 5;
function myFunction()
{
document.write("Вход в функцик<bг />");
document.write("x="+x+"<br />") ;
document.write("Изменение x<br />");

x = 7;

document.write ("x=".+x+"<br />") ;
document.write("Выход из функции<bг />");
}
document.write ("Начало сценария<bг />");
document.write("x="+x+"<br />");
myFunction();

document.write("Возвращение из функции<bг />");
document.write("x="+x+"<br />");
document.write ("Конец сценария<bг />");

Вот результат выполнения этого сценария:
Начало сценария
х=5
Вход в функцию
х=5
Изменение х
х=7
Выход из функции
Возвращение из функции
х=7
Конец сценария

    В данном случае переменная х может и читаться, и изменяться как внутри, так и за пределами функции. Причина в том, что она является глобальной.
    Глобальные переменные использовать не всегда полезно. Если функция использует глобальную переменную, нельзя просто скопировать эту функцию из одного сценария в другой и ожидать, что все будет работать. Придется скопировать и глобальную переменную, от которой эта функция зависит. Это может создавать проблемы по многим причинам, но прежде всего - это ограничивает возможности повторного использования функций. Наличие глобальных значений также затрудняет понимание того, что делает сценарий.
    Вместо глобальных переменных можно определить локальные переменные, которые будут известны только в пределах области видимости функции, внутри которой они определены. Например, в следующем сценарии переменная у определена локально в пределах функции myFunction и этой переменной присваивается значение 5.

function myFunction()
{
var у=5; // определяется локальная переменная
document.write("Внутри функции у="+у);
}
myFunction ();
26.06.2008 document.write("После вызова функции у="+у);

Вне этой функции переменная у не определена, поэтому сценарий генерирует сообщение об ошибке:

Чтобы "исправить" сценарий, можно заменить второй оператор вывода оператором if, чтобы выяснить, определена ли переменная у в рамках данного контекста, а именно - в текущем окне:

if (window.у)
document.write("После вызова функции у="+у);
else
document.write("у не определено");

Обратите внимание: сценарий сообщает о том, что в глобальном пространстве значение у не определено:
Вот результат выполнения этого сценария:
Внутри функции у=5
у не определено

     Однако более важной является задача создания локальных переменных, не известных в глобальном контексте, чтобы можно было скрыть внутреннюю структуру функции от использующего ее программного кода. Разделение вызова и реализации открывает возможность многократного использования функций, но будьте осторожны: использование локальных и глобальных переменных может приводить к недоразумениям, особенно когда для них используются одни и те же имена.
назад: далее: Маскировка


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика