Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы JavaScript.doc
Скачиваний:
25
Добавлен:
28.03.2016
Размер:
518.66 Кб
Скачать

Аналогия из жизни

Проще всего понять переменную, если представить её как «коробку» для данных, с уникальным именем.

Например, переменная message — это коробка, в которой хранится значение "Hello!":

В коробку можно положить любое значение, а позже – поменять его. Значение в переменной можно изменять сколько угодно раз:

var message;

message = 'Hello!';

message = 'World!'; // заменили значение

alert( message );

При изменении значения старое содержимое переменной удаляется.

Можно объявить две переменные и копировать данные из одной в другую:

var hello = 'Hello world!';

var message;

// скопировали значение

message = hello;

alert( hello ); // Hello world!

alert( message ); // Hello world!

На заметку:

Существуют функциональные языки программирования, в которых значение переменной менять нельзя. Например, Scala или Erlang.

В таких языках положил один раз значение в коробку — и оно хранится там вечно, ни удалить ни изменить. А нужно что-то другое сохранить — изволь создать новую коробку (объявить новую переменную), повторное использование невозможно.

С виду — не очень удобно, но, как ни странно, и на таких языках вполне можно успешно программировать. Более того, оказывается, что в ряде областей, например в распараллеливании вычислений, они имеют преимущества. Изучение какого-нибудь функционального языка рекомендуется для расширения кругозора.

Имена переменных

На имя переменной в JavaScript наложены всего два ограничения.

  1. Имя может состоять из: букв, цифр, символов $ и _

  2. Первый символ не должен быть цифрой.

Например:

var myName;

var test123;

Что особенно интересно — доллар '$' и знак подчеркивания '_' являются такими же обычными символами, как буквы:

var $ = 1; // объявили переменную с именем '$'

var _ = 2; // переменная с именем '_'

alert( $ + _ ); // 3

А такие переменные были бы неправильными:

var 1a; // начало не может быть цифрой

var my-name; // дефис '-' не является разрешенным символом

Регистр букв имеет значение

Переменные apple и AppLE — две разные переменные.

Русские буквы допустимы, но не рекомендуются

В названии переменных можно использовать и русские буквы, например:

var имя = "Вася";

alert( имя ); // "Вася"

Технически, ошибки здесь нет, но на практике сложилась традиция использовать в именах только английские буквы.

Зарезервированные имена

Существует список зарезервированных слов, которые нельзя использовать для переменных, так как они используются самим языком, например: var, class, return, export и др.

Например, такой пример выдаст синтаксическую ошибку:

var return = 5; // ошибка

alert(return);

Важность директивы var

В старом стандарте JavaScript разрешалось создавать переменную и без var, просто присвоив ей значение:

num = 5; // переменная num будет создана, если ее не было

В режиме "use strict" так делать уже нельзя.

Следующий код выдаст ошибку:

"use strict";

num = 5; // error: num is not defined

Обратим внимание, директиву use strict нужно ставить до кода, иначе она не сработает:

var something;

"use strict"; // слишком поздно

num = 5; // ошибки не будет, так как строгий режим не активирован

Ошибка в IE8- без var

Если же вы собираетесь поддерживать IE8-, то у меня для вас ещё одна причина всегда использовать var.

Следущий документ в IE8- ничего не выведет, будет ошибка:

<div id="test"></div>

<script>

test = 5; // здесь будет ошибка!

alert( test ); // не сработает

</script>

Это потому, что переменная test не объявлена через var и совпадает с id элемента <div>. Даже не спрашивайте почему — это ошибка в браузере IE до версии 9.

Самое «забавное» то, что такая ошибка присвоения значений будет только в IE8- и только если на странице присутствует элемент с совпадающим с именем id.

Такие ошибки особенно «весело» исправлять и отлаживать.

Вывод простой — всегда объявляем переменные через var, и сюрпризов не будет. Даже в старых IE.