М Б С

Бесплатная помощь в раскрутке форума и сайта
Текущее время: 23-04, 15:50

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Javascript Global Varibles
СообщениеДобавлено: 29-06, 14:48 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 10-07, 10:14
Сообщения: 2347
Откуда: Москва
Javascript Global Varibles - локальные и глобальные переменные в javascript

Глобальные переменные в javascript

Что есть глобальные переменные: переменные "видимые" в любой точке выполнения программы, везде из можно прочитать и перезаписать.
Обычно глобальные переменные определяются в самом начале программы, вне всяких блоков ({})
в случае Js, они задаются после script, или все всяких функций

Код:
 hello = 'Hello'; //задаем глобальную переменную и проверяем ее
document.writeln("->1 "+ hello +" every one
");//->1 Hello every one


if(true)
//if(false)
    {
    var hello = "Hello Dolly and "; //это тоже глобальная
    world = "world"; //глобальная
    var cont = ", we continue" //глобальная
    document.writeln("->1.2 " + hello + world + cont+"
");
    //1.2 Hello Dolly and world, we continue
    }
document.writeln("->2 " + hello + world + cont+"
");
//->2 Hello Dolly and world, we continue


при условии true мы получаем ответ


->1 Hello every one
->1.2 Hello Dolly and world, we continue
->2 Hello Dolly and world, we continue

выполнение обрывается

Таким образом, получается, что на глобальную область использование var никак не влияет. Переменная, упомянутая в script вне процедур считается глобальной даже, если она заключения в скобочки {} блока if while for и других области останется глобальной даже внутри циклов

Выводы, кратко


Локальные переменные в javascript

для переменных используемых в зоне глобальной видимости не важно наличие var.
Блоки после if while for не создают локальной зоны видимости, (как это происходит в других языках)

локальные переменные- переменные задаваемые внутри исполняемого блока (функции) и не виляют на другие функции. и внешнюю среду, т.е. глобальную область.

Код:
 boy = "Jhone";
did = "kills Kenny"; //итак мы имеем 2 глобальных переменных
function doit()
    {
    //уже прошла печать --1, и мы меняем данные меняем данные
    var boy = "Gary"; //создаем локаль
    did = "helps Anny"; //изменяем глобаль
    ;
    document.writeln("--2 " + boy + " " + did + "
");
    //--2 Gary helps Anny
    ;
    //теперь внутри функции зададим локальную и глобальные переменные
    var good = "he was a good boy
";//локаль!
    bad = "he likes a bad girls
";//глобаль
    }
;
document.writeln("--1 " + boy + " " + did + "
");
//--1 Jhone kills Kenny
doit();
//--2 Gary helps Anny
document.writeln("--3 " + boy + " " + did + "
");   
//--3 Jhone helps Anny
;
if(!true)
//if(!false)
    {
    document.writeln("--4 " + good);   
    //выполнение этого блока вызовет ошибку.
    //мы сейчас находимся вне локальной области видимости
    //функции doit(), поэтому для нас заданной через var
    //переменной good просто не существует
    }
document.writeln("--5 " + bad);   
//--5 he likes a bad girls


Результат:


--1 Jhone kills Kenny
--2 Gary helps Anny
--3 Jhone helps Anny
--5 he likes a bad girls

Вывод


Локальные переменные в javascript

var работает внутри функции, объявляя локальную переменную. Это основная его задача

Рекомендации и замечания


Яваскрип сильно отличается от си уже тем что только(?) внутри функции возможны локальные переменные.
использование var или не использование в глобальной области видимости зависит только от вашего личного опыта. Но по мне так лучше не ленится. в перле это называется use strict

>>>для переменных используемых в зоне глобальной видимости не важно наличие var

Важно. Во-первых, “вары” нельзя удалить (с помощью delete). Во-вторых, их конкретизация происходит на “нулевой строке” (до начала работы “построчно”), где им сразу же присваивается значение undefined, и только потом переменная может получить (а может не получить) новое значение:

var glb_1 = 1;
if (false) {var glb_2 = 2; glb_3 = 3;}

alert(glb_1) // конкретизирована и получила значение 1
alert(glb_2) // конкретизировна и получила значение ‘undefined’
alert(glb_3) // вообще не переменная (нет var), ошибка при обращении

Автор: Zeroglif
Сайт автора: http://www.karpati.ru/
При перепечатке статьи ссылка на http://mbs.flybb.ru/ обязательна


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by Forumenko © 2006–2014
Русская поддержка phpBB