Наверх

Зачем нужен 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".

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

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