2. Примитивы
К категории примитивов в языке JavaScript относятся:
2.1 Числа
В отличие от многих языков программирования, в JavaScript не делается различий между целыми и вещественными значениями. Все числа в JavaScript представляются вещественными значениями (с плавающей точкой). Для представления чисел в JavaScript используется 64-битный формат, определяемый стандартом IEEE 754.
Обратите внимание, что любому числовому литералу может предшествовать знак «минус» (-), делающий числа отрицательными. Однако фактически минус представляет собой унарный оператор смены знака, не являющийся частью синтаксиса числовых литералов.
2.1.1 Числовые литералы
В JavaScript есть 4 числовых литералов:
Десятичный литерал
10; // 10
1.2; // 1.2
.2; // 0.2
1e+2; // 100
1e-2; // 0.01
Двоичный литерал с целыми числами
0b010101; // 21
0B010101; // 21
Восьмеричный целочисленный литерал
0o714; // 460
0O714; // 460
Шестнадцатеричный целочисленный литерал
0xFFAA; // 65450
0XFFAA; // 65450
2.1.2 Специальные числа
В JavaScript есть три специальных значения, которые считаются числами, но ведут себя не как обычные числа.
2.1.2 NaN
Если математическая операция не может быть совершена, то возвращается специальное значение NaN (Not-A-Number).
Например, деление 0/0 в математическом смысле неопределено, поэтому его результат NaN.
'use strict';
alert( 0 / 0 ); // NaN
Значение NaN используется для обозначения математической ошибки и обладает следующими свойствами:
Никакие математические операции в JavaScript не могут привести к ошибке или «обрушить» программу. В худшем случае, результат будет NaN.
2.1.3 Infinity
Infinity – особенное численное значение, которое ведет себя в точности как математическая бесконечность ∞.
'use strict';
Infinity === Infinity // true
Infinity === -Infinity // false
Infinity > Infinity // false
Infinity > -Infinity // true
-Infinity < Infinity // true
2.1.4 Проверка на число
Глобальная isFinite() функция определяет, является ли переданное значение конечным числом. Если необходимо, параметр сначала преобразуется в число.
2.1.5 Методы объекта Number
2.2 Строки
Следующий базовый тип данных – строки. Строка – это неизменяемая, упорядоченная последовательность 16-битных значений, каждое из которых обычно представляет символ Юникода. Строки в JavaScript являются типом данных, используемым для представления текста. Длина строки – это количество 16-битных значений, содержащихся в ней. Нумерация символов в строках (и элементов в массивах) в языке JavaScript начинается с нуля: первое 16-битное значение находится в позиции 0, второе – в позиции 1 и т.д. Они используются для хранения текста. Записываются они в строковых литералах:
Пример
'use strict';
'This is my string';
"This is my string";
`This is my string`;
В ECMAScript 3 строковые литералы должны записываться в одной строке программы и не могут разбиваться на две строки. Однако в ECMAScript 5 строковые литералы можно разбивать на несколько строк, заканчивая каждую строку, кроме последней, символом обратного слэша (\). Ни один из символов обратного слэша, как и следующие за ними символы перевода строки, не будут включены в строковый литерал.
2.2.1 Экранирование символов
Если строка в одинарных кавычках, то внутренние одинарные кавычки внутри должны быть экранированы, то есть снабжены обратным слешем \', вот так:
Пример
'use strict';
'It\'s my string'; //It's my string
'This is my \"string\"'; //This is my "string"
"'It\'s my string"; //It's my string
`It's "string"`; // It's my string
2.2.2 Экранирование символов
Строки могут содержать специальные символы. Самый часто используемый из таких символов – это «перевод строки».
Пример
'use strict';
alert( 'Привет\nМир' ); // выведет "Мир" на новой строке
Есть и более редкие символы, вот их список:
- \b
- \t
- \n
- \v
- \f
- \r
- \\
- \'
- \"
2.3 Логические значения
Логическое значение говорит об истинности или ложности чего-то. Логический тип данных имеет только два допустимых логических значения. Эти два значения представлены литералами true и false.
'use strict';
true;
false;
2.4 Cпециальный тип Null
В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках. Это просто специальное значение, которое имеет смысл «ничего» или «значение неизвестно».
2.5 Cпециальный тип undefined
В языке JavaScript имеется еще одно значение, свидетельствующее об отсутствии значения. Значение undefined, указывающее на полное отсутствие какого-либо значения. Оно возвращается при обращении к переменной, которой никогда не присваивалось значение, а также к несуществующему свойству объекта или элементу массива. Кроме того, значение undefined возвращается функциями, не имеющими возвращаемого значения, и присваивается параметрам функций для аргументов, которые не были переданы при вызове.
Идентификатор undefined является именем предопределенной глобальной переменной (а не ключевым словом, как null), которая инициализирована значением undefined. В ECMAScript 3 undefined является переменной, доступной для чтения/записи, которой можно присвоить любое другое значение. Эта проблема была исправлена в ECMAScript 5, и в реализациях JavaScript, соответствующих этому стандарту, переменная undefined доступна только для чтения.
Значение undefined можно рассматривать как признак неожиданного или ошибоч ного отсутствия какого-либо значения, а null – как признак обычного или вполне ожидаемого отсутствия значения. Если в программе потребуется присвоить одно из этих значений переменной или свойству или передать одно из этих значений функции, практически всегда предпочтительнее использовать значение null.
2.6 Cпециальный тип Symbol
Символы – новый примитивный тип, предназначенный для уникальных идентификаторов.
Основная область использования символов – это системные свойства объектов, которые задают разные аспекты их поведения. Поддержка у них пока небольшая, но она растёт. Системные символы позволяют разработчикам стандарта добавлять новые «особые» свойства объектов, при этом не резервируя соответствующие строковые значения.