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