44. Инструкции-объявления.
Инструкция var
позволяет объявить одну или несколько переменных (опционально – с начальным значением):
var имя_1 [ = знач_1][,..., имя_n [= знач_n]]
Если значение не указано, подразумевается undefined
.
Инструкция var
может размещаться внутри функции (локальная переменная функции), вне функции – на верхнем уровне скрипта (глобальная переменная).
let
Объявляет локальную переменную в области видимости блока, необязательно инициализирует её значением.
const
Объявляет именованную константу только для чтения.
const MY_FAV = 7;
В JavaScript при объявлении переменной не указывается тип, потому что переменные могут хранить значения любых типов.
Область видимости переменной (scope) – та часть скрипта, для которой эта переменная определена. В JavaScript область видимости бывает только глобальной и локальной. Область видимости связана с функциями (а не с блоками кода, как в других языках!).
Переменная, объявленная вне функции, называется глобальной. Она имеет глобальную область видимости – определена для всего скрипта. Переменные, объявленные внутри функции, определены только в её теле. Они называются локальными и имеют локальную область видимости. Параметры функций также считаются локальными переменными. Локальная переменная имеет преимущество перед одноимённой глобальной переменной!
Внутри функции локальные переменные видимы даже до строки с объявлением! Выглядит так, будто все объявления переменных внутри функции транслятор «подымает» к началу функции (variable hoisting). Правда при таком «подъёме» начальные значения не учитываются (до выполнения инструкции var). Для глобальных переменных подъем тоже работает, но в рамках одного скрипта.
Переменную можно объявлять повторно. Без инициализации она даже не потеряет своего значения.
Инструкция function
служит для определения функции:
function имя_функции([арг_1 [,арг_2 [...,арг_n]]]){
инструкции
}
Круглые и фигурные скобки здесь обязательны.
Инструкция function
может располагаться на «верхнем уровне» скрипта или быть вложенной в функцию. В любом случае, не допускается вложение этой инструкции в ветвления, циклы и тому подобное! (нужен «первый уровень вложенности»)