Функция Number() преобразует в тип Number, String() в тип String, Boolean() в тип Boolean.
Типы данных в JavaScript
В JavaScript существует 5 типов данных, которые могут содержать значения:
- string
- number
- boolean
- object
- function
Есть 3 типа объектов:
- Object
- Date
- Array
И 2 типа данных, которые не могут содержать значения:
- null
- undefined
Оператор typeof
Чтобы определить тип переменной JavaScript, используется оператор typeof.
typeof "John" // Возвращает "string"
typeof 3.14 // Возвращает "number"
typeof NaN // Возвращает "number"
typeof false // Возвращает "boolean"
typeof [1,2,3,4] // Возвращает "object"
typeof {name:'John', age:34} // Возвращает "object"
typeof new Date() // Возвращает "object"
typeof function () {} // Возвращает "function"
typeof myCar // Возвращает "undefined" *
typeof null // Возвращает "object"
Обратите внимание:
- У NaN тип number
- У массива тип object
- У даты тип object
- У null тип object
- У неопределенной переменной тип undefined *
- У переменной, которой не присвоено значение, тоже тип undefined *
Нельзя при помощи оператора typeof определить, является ли объект JavaScript массивом (или датой).
Оператор typeof это не переменная. Это оператор. У операторов ( + - * / ) нет типов. Однако оператор typeof всегда возвращает строку (содержащую тип операнда).
Свойство constructor
Свойство constructor возвращает функцию-конструктор у всех переменных JavaScript.
"John".constructor // Возвращает функцию String() {[машинный код]}
(3.14).constructor // Возвращает функцию Number() {[машинный код]}
false.constructor // Возвращает функцию Boolean() {[машинный код]}
[1,2,3,4].constructor // Возвращает функцию Array() {[машинный код]}
{name:'John',age:34}.constructor // Возвращает функцию Object() {[машинный код]}
new Date().constructor // Возвращает функцию Date() {[машинный код]}
function () {}.constructor // Возвращает функцию Function(){[машинный код]}
Вы можете проверить свойство constructor, чтобы определить, является ли объект массивом (содержит слово "Array"):
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
Или еще проще, вы можете проверить, является ли объект функцией Array:
function isArray(myArray) {
return myArray.constructor === Array;
}
Аналогичным образом можно проверить является ли переменная объектом Date.
Преобразование типов в JavaScript
Переменные JavaScript могут быть преобразованы в новые переменные и другие типы данных:
- при помощи функции JavaScript
- автоматически самим JavaScript
Преобразование чисел в строки
Глобальный метод String() позволяет преобразовывать числа в строки.
Его можно использовать с любыми видами чисел — константами, переменными или выражениями:
String(x) // преобразовывает строку числовую переменную x
String(123) // преобразовывает строку константу 123
String(100 + 23) // преобразовывает строку результат выражения
Метод toString() объекта Number делает то же самое.
x.toString()
(123).toString()
(100 + 23).toString()
В главе Методы объекта Number вы найдете другие методы, которые можно использовать для преобразования чисел в строки:
Метод | Описание |
---|---|
toExponential() | Возвращает строку с округленным числом, записанным в экспоненциальной нотации. |
toFixed() | Возвращает строку с числом, записанным с заданным количеством цифр после десятичной точки. |
toPrecision() | Возвращает строку с числом заданной длины. |
Преобразование логических значений (тип Boolean) в строку
Глобальный метод String() позволяет преобразовывать логические значения в строки.
String(false) // возвращает "false"
String(true) // возвращает "true"
Метод toString() объекта Boolean делает то же самое.
false.toString() // возвращает "false"
true.toString() // возвращает "true"
Преобразование даты (тип Date) в строку
Глобальный метод String() позволяет преобразовывать дату (тип Date) в строку.
String(Date())
Метод toString() объекта Date делает то же самое.
Date().toString()
В главе Методы объекта Date вы найдете другие методы, которые можно использовать для преобразования даты в строку:
Метод | Описание |
---|---|
getFullYear() | Получить год в формате четырех цифр (гггг) |
getMonth() | Получить номер месяца (0-11) |
getDate() | Получить число месяца (1-31) |
getHours() | Получить час (0-23) |
getMinutes() | Получить минуты (0-59) |
getSeconds() | Получить секунды (0-59) |
getMilliseconds() | Получить миллисекунды (0-999) |
getTime() | Получить время (количество миллисекунд, прошедших с 1 января 1970) |
getDay() | Получить номер дня недели (0-6) |
Преобразование строк в числа
Глобальный метод Number() позволяет преобразовывать строки в числа.
Строки, содержащие числа (как "3.14"), преобразовываются в числа (как 3.14). Пустые строки преобразовываются в 0. Все остальные строки преобразовываются в NaN (Не число).
Number("3.14") // возвращает 3.14
Number(" ") // возвращает 0
Number("") // возвращает 0
Number("99 88") // возвращает NaN
В главе Методы объекта Number вы найдете другие методы, которые можно использовать для преобразования строк в числа:
Метод | Описание |
---|---|
parseFloat() | Парсит строку и возвращает число с плавающей точкой. |
parseInt() | Парсит строку и возвращает целое число. |
Унарный оператор +
Унарный оператор + также можно использовать для преобразования переменных в числовой тип:
var y = "5"; // y строка
var x = + y; // x число
Если переменная не может быть преобразована, то она все равно станет числом, но со значением NaN (Не число):
var y = "John"; // y строка
var x = + y; // x число (NaN)
Преобразование логических значений (тип Boolean) в число
Глобальный метод Number() позволяет преобразовывать логические значения в числа.
Number(false) // возвращает 0
Number(true) // возвращает 1
Преобразование даты (тип Date) в число
Глобальный метод Number() позволяет преобразовывать значения даты (тип Date) в числа.
d = new Date();
Number(d) // возвращает 1404568027739
Метод getTime() объекта Date делает то же самое.
d = new Date();
d.getTime() // возвращает 1404568027739
Автоматическое преобразование типов
Когда JavaScript приходится оперировать с "неправильным" типом данных, интерпретатор попытается преобразовать тип этого значения в "правильный".
Результат получается не всегда таким, как вы ожидаете:
5 + null // возвращает 5, потому что null преобразуется в 0
"5" + null // возвращает "5null", потому что null преобразуется в "null"
"5" + 2 // возвращает "52", потому что 2 преобразуется в "2"
"5" - 2 // возвращает 3, потому что "5" преобразуется в 5
"5" * "2" // возвращает 10, потому что "5" и "2" преобразуется в 5 и 2
Автоматическое преобразование строк
JavaScript автоматически вызывает метод переменной toString(), когда вы пытаетесь "вывести" объект или переменную:
document.getElementById("demo").innerHTML = myVar;
// if myVar = {name:"Fjohn"} // toString преобразует в "[object Object]"
// if myVar = [1,2,3,4] // toString преобразует в "1,2,3,4"
// if myVar = new Date() // toString преобразует в "Fri Jul 18 2014 09:08:55 GMT+0200"
Числа и логические значения также преобразуются, но это не так заметно:
// if myVar = 123 // toString преобразует в "123"
// if myVar = true // toString преобразует в "true"
// if myVar = false // toString преобразует в "false"
Таблица преобразования типов JavaScript
В следующей таблице показаны результаты преобразования различных значений JavaScript в типы Number, String и Boolean:
Оригинальное значение | Преобразованное в Number | Преобразованное в String | Преобразованное в Boolean |
---|---|---|---|
false | 0 | "false" | false |
true | 1 | "true" | true |
0 | 0 | "0" | false |
1 | 1 | "1" | true |
"0" | 0 | "0" | true |
"000" | 0 | "000" | true |
"1" | 1 | "1" | true |
NaN | NaN | "NaN" | false |
Infinity | Infinity | "Infinity" | true |
-Infinity | -Infinity | "-Infinity" | true |
"" | 0 | "" | false |
"20" | 20 | "20" | true |
"twenty" | NaN | "twenty" | true |
[] | 0 | "" | true |
[20] | 20 | "20" | true |
[10,20] | NaN | "10,20" | true |
["twenty"] | NaN | "twenty" | true |
["ten","twenty"] | NaN | "ten,twenty" | true |
function(){} | NaN | "function(){}" | true |
{ } | NaN | "[object Object]" | true |
null | 0 | "null" | false |
undefined | NaN | "undefined" | false |
Значения в кавычках показывают строковые значения.
Красным цветом выделены значения, которые не всегда ожидаемы.