JavaScript Преобразование типов
Number() преобразуется в Числа, String() преобразуется в Строки, Boolean() преобразуется в логический тип.
JavaScript Типы данных
В JavaScript существует 5 различных типов данных, которые могут содержать значения:
string
number
boolean
object
function
Всего существует 6 типов объектов:
Object
Date
Array
String
Number
Boolean
И 2 типа данных, которые не могут содержать значения:
null
undefined
Оператор typeof
Вы можете использовать typeof
оператор, чтобы определить тип данных переменной JavaScript.
Пример
typeof "Щипунов" // Возвращает "string"
typeof 3.14 // Возвращает "number"
typeof NaN // Возвращает "number"
typeof false // Возвращает "boolean"
typeof [1,2,3,4] // Возвращает "object"
typeof {name:'Щипунов', age:34} // Возвращает "object"
typeof new Date() // Возвращает "object"
typeof function() {} // Возвращает "function"
typeof myCar // Возвращает "undefined" *
typeof null // Возвращает "object"
Попробуйте сами »
Обратите внимание:
- Тип данных NaN - число
- Тип данных массива - объект
- Тип данных дата - объект
- Тип данных null - объект
- Тип данных неопределенной переменной является - undefined *
- Тип данных переменной, которой не было присвоено значение, также undefined *
Вы не можете использовать, typeof
чтобы определить, является ли объект JavaScript массивом (или датой).
Оператор Тип данных typeof
Оператор typeof
не является переменной. Это оператор. Операторы (+ - * /) не имеют данных какого-либо типа.
Но typeof
оператор, всегда возвращает возвращает string (содержащую тип операнда).
Свойство constructor
Свойство constructor
возвращает функцию конструктора для всех переменных JavaScript.
Пример
"Щипунов".constructor // Возвращает функцию String() {[native code]}
(3.14).constructor // Возвращает функцию Number() {[native code]}
false.constructor // Возвращает function Boolean() {[native code]}
[1,2,3,4].constructor // Возвращает функцию Array() {[native code]}
{name:'Щипунов',age:34}.constructor // Возвращает функцию Object() {[native code]}
new Date().constructor // Возвращает функцию Date() {[native code]}
function () {}.constructor // Возвращает function Function(){[native code]}
Попробуйте сами »
Вы можете проверить свойство конструктора, чтобы узнать, является ли объект Array
(содержит слово "Array"):
Пример
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
Или, что еще проще, вы можете проверить, является ли объект Array функцией:
Вы можете проверить свойство конструктора, чтобы узнать, является ли объект Date
(содержит слово "Date"):
Пример
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
Или, что еще проще, вы можете проверить, является ли объект Date функцией:
JavaScript Преобразование типов
Переменные JavaScript можно преобразовать в новую переменную и другой тип данных:
- С помощью функции JavaScript
- Автоматически с помощью самого JavaScript
Преобразование чисел в строки
С помощью глобального метода String()
можно преобразовать числа в строки.
Он может быть использован для любого типа чисел, литералов, переменных или выражений:
Пример
String(x) // возвращает строку из числовой переменной x
String(123) // возвращает строку из числового литерала 123
String(100 + 23) // возвращает строку из числа из выражения
Попробуйте сами »
Метод Чисел toString()
делает то же самое.
В главе Методы чисел, вы найдете больше методов, которые можно использовать для преобразования чисел в строки:
Метод | Описание |
---|---|
toExponential() | Возвращает строку с округленным и записанным числом с использованием экспоненциальной записи. |
toFixed() | Возвращает строку с округленным числом и записанным с указанным количеством десятичных знаков. |
toPrecision() | Возвращает строку с числом, записанным с указанной длиной |
Преобразование логических значений в строки
Глобальный метод String()
может преобразовывать логические значения в строки.
String(false) // возвращает "false"
String(true) // возвращает "true"
Метод Булева toString()
делает то же самое.
false.toString()// возвращает "false"
true.toString() // возвращает "true"
Преобразование дат в строки
Глобальный метод String()
может преобразовывать даты в строки.
String(Date()) // возвращает "Thu Jul 17 2014 15:38:19 GMT+0200 (западное европейское летнее время)"
Метод Даты toString()
делает то же самое.
Пример
Date().toString() // возвращает "Thu Jul 17 2014 15:38:19 GMT+0200 (летнее время Западной Европы)"
В главе Методы дат, вы найдете больше методов, которые можно использовать для преобразования дат в строки:
Метод | Описание |
---|---|
getDate() | Получить день в виде числа (1-31) |
getDay() | Получить номер дня недели (0-6) |
getFullYear() | Получить четырехзначный год (yyyy) |
getHours() | Получить час (0-23) |
getMilliseconds() | Получить миллисекунды (0-999) |
getMinutes() | Получить минуты (0-59) |
getMonth() | Получить месяц (0-11) |
getSeconds() | Получить секунды (0-59) |
getTime() | Получить время (миллисекунды с 1 января 1970 г.) |
Преобразование строк в числа
Глобальный метод Number()
может преобразовывать строки в числа.
Строки, содержащие числа (например, "3.14"), преобразуются в числа (например, 3.14).
Пустые строки преобразуются в 0.
Все остальное преобразуется в NaN
(не число).
Number("3.14") // возвращает 3.14
Number(" ") // возвращает 0
Number("") // возвращает 0
Number("99 88") // возвращает NaN
В главе Методы чисел, вы найдете другие методы, которые можно использовать для преобразования строк в числа:
Метод | Описание |
---|---|
parseFloat() | Анализирует строку и возвращает число с плавающей запятой |
parseInt() | Анализирует строку и возвращает целое число |
Оператор унарный +
Оператор унарный + может быть использован для преобразования переменного в число:
Если переменная не может быть преобразована, она все равно станет числом, но со значением NaN
(не числом):
Преобразование логических значений в числа
Глобальный метод Number()
, также может преобразовывать логические значения в числа.
Number(false) // возвращает 0
Number(true) // возвращает 1
Преобразование дат в числа
Глобальный метод Number()
, можно использовать для преобразования дат в числа.
d = new Date();
Number(d) // возвращает 1404568027739
Метод Даты getTime()
делает то же самое.
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 | Попробовать » |
Значения в кавычках обозначают строковые значения.
Красные значения указывают на значения, которых (некоторые) программисты могут не ожидать.