- •Основы JavaScript
- •Если скрипт — внешний, то пока браузер не выполнит его, он не покажет часть страницы под ним.
- •Аналогия из жизни
- •На заметку:
- •Константы
- •Если мы ищем переменную с одним именем, а находим — с другим, то зачастую самый лучший ход — это переименовать переменную, чтобы имя было тем, которое вы искали.
- •Двоичный вид числа, обратного данному (например, 5 и -5) получается путём обращения всех битов с прибавлением 1.
- •Список операторов
- •Вспомогательные функции parseInt, toString
- •& (Побитовое и)
- •| (Побитовое или)
- •Исключающее или в шифровании
- •Можно проверить один из нескольких доступов.
- •Округление
- •Проверка на -1
- •Умножение и деление на степени 2
- •Почему результат разный?
Аналогия из жизни
Проще всего понять переменную, если представить её как «коробку» для данных, с уникальным именем.
Например, переменная 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 наложены всего два ограничения.
-
Имя может состоять из: букв, цифр, символов $ и _
-
Первый символ не должен быть цифрой.
Например:
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.