Page 59 - 6105
P. 59

}
                      showMessage ();


                      alert (userName); // Петя, значення зовнішньої змінної
               змінено функцією

                      Звичайно,  якби  всередині  функції,  в  рядку  (1),  була  б  оголошена  своя

               локальна змінна var userName, то всі звернення використовували б її, і зовнішня

               змінна  залишилася  б  незмінною.  Змінні,  оголошені  на  рівні  всього  скрипта,

               називають  «глобальними  змінними».  В  наведеному  вище  прикладі  змінна

               userName –  глобальна.

                      Оголошувати  глобальними  доцільно  тільки  ті  змінні,  які  дійсно  мають

               загальне  значення  для  проекту,  а  змінні,  потрібні  для  вирішення  конкретного

               завдання – є локальними у відповідній функції.


                      Увага: неявне оголошення глобальних змінних!
                      У старому стандарті  JavaScript існувала можливість неявного оголошення


               змінних присвоєнням значення.

                       function showMessage () {

                        message = 'Привіт'; // без var!

                      }

                      showMessage ();
                      alert (message); // Вітання

                      У коді вище змінна message ніде не оголошена, а їй відразу присвоюється

               значення. Швидше за все, програміст просто забув поставити var. При use strict

               такий код привів би до помилки, але без нього змінна буде створена автоматично,

               причому в прикладі вище вона створюється не в функції, а на рівні всього скрипта.


               Тут  небезпека  навіть  не  в  автоматичному  створенні  змінної,  а  в  тому,  що
               глобальні  змінні  повинні  використовуватися  тоді,  коли  дійсно  потрібні


               «загальноскриптові»  параметри.  Забули  var  в  одному  місці,  потім  в  іншому  -  в





                                                                58
   54   55   56   57   58   59   60   61   62   63   64