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».

Один комментарий к “Зачем нужен var в Javascript”

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *