Значения, переменные.
JavaScript распознаёт значения следующих типов:
- Числа, такие как 42 или 3.14159
- Логические (Булевы) значения: true или false.
- Строки, такие как "Howdy!”.
- null, специальное ключевое слово, обозначающее нулевое значение; null является также примитивным значением. Поскольку JavaScript чувствителен к регистру символов, null это не то же самое, что Null, NULL или какой-нибудь иной вариант.
- undefined, свойство верхнего уровня, значение которого не определено/undefined; undefined является также примитивным значением.
Этот сравнительно небольшой набор значений типов, или типов данных, даёт возможность выполнения функций в приложении. Видимого различия между целыми и реальными числами нет. Нет в JavaScript также типа данных date. Однако Вы можете использовать объект Date и его методы для работы с датами.
Объекты и функции также являются фундаментальными элементами языка. Вы можете представлять объекты как именованные контейнеры для значений, а функции – как процедуры, выполняемые Вашим приложением.
1.1. Конверсия типов данных
JavaScript это динамически типизированный язык. Это означает, что Вы не должны специфицировать тип данных переменной при её объявлении и что типы данных при необходимости автоматически конвертируются в процессе выполнения скрипта. Так, например, Вы можете определить переменную:
var answer = 42
и позднее можете присвоить этой же переменной строковое значение:
answer = "Thanks for all the fish..."
Поскольку JavaScript типизируется динамически, такое присвоение не является ошибкой.
В выражениях, содержащих числа и строки и операцию +, JavaScript конвертирует числа в строки. Например:
x = "The answer is " + 42 // возвращает "The answer is 42" y = 42 + " is the answer" // возвращает "42 is the answer"
В выражениях с использованием других операций, JavaScript не конвертирует числа в строки. Например:
"37" - 7 // возвращает 30 "37" + 7 // возвращает 377
2. Переменные
Вы используете переменные в качестве символических имён значений. Имена переменных, называемые идентификаторы, подчиняются определённым правилам.
Идентификатор в JavaScript обязан начинаться с латинской буквы, символа подчёркивания/underscore (_) или знака доллара ($); последующие символы имени могут также быть цифрами (0–9). Поскольку JavaScript различает регистр символов, могут использоваться буквы от "A” до "Z” (верхний регистр) и от "a” до "z” (нижний регистр).
Начиная с JavaScript 1.5, Вы можете использовать в качестве идентификаторов буквы ISO 8859–1 или Unicode, такие как å и ü. Вы можете также использовать в качестве символов в идентификаторах escape-последовательности \uXXXX Unicode.
Вот примеры правильных имён: Number_hits, temp99, _name.
2.1. Объявление переменных
Можно объявить переменную двумя способами:
- Просто присвоив ей значение. Например, x = 42
- С помощью ключевого слова var. Например, var x = 42
2.2. Вычисление переменных
Переменная или элемент массива, которым не присвоены значения, имеют значение undefined. Результат вычисления переменной с неприсвоенным значением зависит от того, как она была объявлена:
- Если такая переменная была объявлена без использования var, возникает ошибка времени выполнения.
- Если такая переменная была объявлена с использованием var, результатом будет значение undefined, или ##NaN## в числовом контексте.
Следующий код демонстрирует вычисление переменных, не имеющих присвоенного значения.
function f1() { return y - 2; } f1() //Вызывает ошибку времени выполнения/runtime error function f2() { return var y - 2; } f2() //возвращает NaN
Вы можете использовать undefined для определения, имеет ли переменная значение. В следующем коде переменная input не имеет присвоенного значения, и оператор if вычисляется в true.
var input; if(input === undefined){ doThis(); } else { doThat(); }
Значение undefined ведёт себя как false, если используется с булевым значением. Например, следующий код выполняет функцию myFunction, поскольку элемент массива не определён:
myArray=new Array() if (!myArray[0]) myFunction()
Если Вы вычисляете null-переменную, значение null ведёт себя как 0 в числовом контексте и как false – в булевом. Например:
var n = null n * 32 //возвращает 0
2.3. Область видимости/Scope переменной
Если Вы устанавливаете идентификатор переменной путём присваивания значения вне функции, такая переменная называется глобальной, поскольку доступна в любом месте текущего документа. Если Вы объявляете переменную внутри функции, она называется локальной, поскольку «видна»/доступна только внутри этой функции.
Использование var для объявления глобальной переменной находится на Вашем усмотрении. Однако Вы обязаны использовать var для объявления переменной внутри функции.
Вы можете обращаться к переменным, объявленным в одном окне или фрэйме, из другого окна или фрэйма, специфицируя имя окна или фрэйма. Например, если переменная phoneNumber объявлена во FRAMESET-документе, Вы можете обратиться к ней из дочернего фрэйма: parent.phoneNumber.
3. Константы
Вы можете создавать именованные константы «только-для-чтения» с помощью ключевого слова const. Синтаксис идентификатора константы такой же, что и у идентификатора переменной: он обязан начинаться с буквы или символа подчёркивания и может содержать символы алфавита, числа и символ подчёркивания.
const prefix = '212';
Константа не может изменить значение путём нового присвоения и не может быть переобъявлена в процессе выполнения скрипта.
Правила видимости для констант те же, что и для переменных, за исключением того, что ключевое слово const необходимо всегда, даже для глобальных констант. Если ключевое слово отсутствует, идентификатор представляет var.
Вы не можете объявить константу с тем же именем, что и у функции или переменной, в одной области видимости с этой функцией или переменной. Например:
//ЭТО ВЫЗОВЕТ ОШИБКУ function f{}; const f = 5; //ЭТО ТАКЖЕ ВЫЗОВЕТ ОШИБКУ function f{ const g=5; var g; //операторы }