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 может располагаться на «верхнем уровне» скрипта или быть вложенной в функцию. В любом случае, не допускается вложение этой инструкции в ветвления, циклы и тому подобное! (нужен «первый уровень вложенности»)