Зачем нужен var в Javascript
JavaScript - достаточно гибкий язык, в котором многие конструкции, которые, будучи написанными на других языках, выдавали бы ошибку, отлично работают. К примеру - объявление переменных. Часто возникает вопрос "Зачем в JavaScript для переменных нужен var, если код и без него отлично работает во всех браузерах?". На самом деле ответ заключается в предназначении этого самого var. Ключевое слово var необходимо, чтобы объявить переменную в текущей области видимости, то есть чтобы ограничить видимость переменной.
В JavaScript предусмотрено две области видимости для переменной: глобальная и локальная. Область видимости - это фрагмент кода программы, в котором эта переменная доступна и гре её можно использовать.
Переменная, которая была объявлена за пределами какой-либо функции является глобальной переменной - она имеет глобальную область видимости и доступна в любом месте кода программы.
<script> var a = 1; function get() { alert(a); } get(); </script> |
Этот код выведет "1" - alert внутри функции, хотя переменная объявлена вне ее.
Переменная, объявленная внутри функции является локальной - она имеет локальную область видимости (область видимости функции) и доступна в любом месте внутри функции, в том числе и внутри вложенных функций. Локальная переменная создаётся и уничтожается каждый раз при вызове функции.
<script> function get() { var a = 10; alert(a); } get(); alert(a); </script> |
Этот код покажет только один alert - первый, со значением 10. Второй не выполнится, поскольку переменная a в данной области видимости не существует.
Внутри тела функции локальная переменная имеет преимущество перед глобальной переменной с тем же именем, т.е. если объявить локальную переменную или параметр функции с тем же именем, что у глобальной переменной, то глобальная переменная будет скрыта и будет использоваться локальная:
<script> var a = 1; function get() { var a = 10; alert(a); } get(); alert(a); </script> |
Этот код сначала выведет "10" - alert внутри функции, a затем "1" - alert вне функции. То есть, значение глобальной переменной не изменилось.
Таким образом, без var область видимости новой переменной - глобальный объект window. А если переменная объявлена с var, ее область видимости - текущая функция. Если переменная объявлена вне функции, то ее область видимости - глобальная, то есть var можно опустить.
Важно, что в отличие от большинства языков, в JavaScript блок (код, взятый в фигурные скобки) не задает область видимости.
<script> function get() { var a = 10; { var a = 1; alert(a); } alert(a); } get(); </script> |
Этот код выведет оба раза значение "1".
Спасибо, очень полезная статья.