Примеры предыдущего раздела демонстрируют тонкий момент программирова_ ния на JavaScript: имеется два вида неопределенных переменных. Первый – пе_ ременная, которая нигде не объявлена. Попытка прочитать значение необъявлен' ной переменной приведет к ошибке времени выполнения. Необъявленные пере_менные не определены, потому что они просто не существуют. Как уже было ска_ зано, присваивание значения необъявленной переменной не приводит к ошибке – просто она при присваивании неявно объявляется как глобальная переменная.
Второй вид неопределенных переменных – переменная, которая была объявлена, но значение ей нигде не присваивалось. Если прочитать значение одной из таких переменных, то будет получено ее значение по умолчанию – undefined. Такие пе_ ременные лучше называть неинициализированными (unassigned), чтобы отли_ чить их от тех переменных, которые вообще не объявлялись и не существуют.
В следующем фрагменте иллюстрируются некоторые различия между неопреде_ ленными и неинициализированными переменными:
| var x;
| // Объявляем неинициализированную переменную. Значением ее является undefined.
|
| alert(u); //
| Использование необъявленной переменной приведет к ошибке.
|
| u = 3;
| //
| Присваивание значения необъявленной переменной создает эту переменную.
|