JavaScript Преобразование типов
Число () преобразуется в число, String () преобразуется в строку, логическое () преобразуется в логическое значение.
Типы данных JavaScript
В JavaScript существует 5 различных типов данных, которые могут содержать значения:
- Строка
- Номер
- Логических
- Объекта
- Функции
Существует 3 типа объектов:
- Объекта
- Дата
- Массива
И 2 типа данных, которые не могут содержать значения:
- Null
- Неопределенный
Оператор typeof
Для поиска типа данных переменной JavaScript можно использовать оператор typeof .
Пример
typeof "John"
// Returns "string"
typeof 3.14
// Returns "number"
typeof NaN
// Returns "number"
typeof false
// Returns "boolean"
typeof [1,2,3,4] // Returns
"object"
typeof {name:'John', age:34}
// Returns "object"
typeof new Date()
// Returns "object"
typeof function () {} // Returns
"function"
typeof myCar
// Returns "undefined" *
typeof null
// Returns "object"
Пожалуйста, обратите внимание:
- Тип данных NaN — Number
- Типом данных массива является Object
- Типом данных даты является Object
- Типом данных null является Object
- Тип данных неопределенной переменной не определен *
- Тип данных переменной, которой не назначено значение, также не определен *
Нельзя использовать typeof , чтобы определить, является ли объект JavaScript массивом (или датой).
Тип данных typeof
Оператор typeof не является переменной. Это оператор. Операторы (+-*/) не имеют какого-либо типа данных.
Но оператор typeof всегда возвращает строку (содержащую тип операнда).
Свойство конструктора
Свойство конструктора возвращает функцию конструктора для всех переменных JavaScript.
Пример
"John".constructor
// Returns function String() {[native code]}
(3.14).constructor
// Returns function Number() {[native code]}
false.constructor // Returns
function Boolean() {[native code]}
[1,2,3,4].constructor
// Returns function Array() {[native code]}
{name:'John',age:34}.constructor
// Returns function Object() {[native code]}
new Date().constructor
// Returns function Date() {[native code]}
function () {}.constructor // Returns
function Function(){[native code]}
Можно проверить свойство конструктора, чтобы выяснить, является ли объект массивом (содержит слово "Array"):
Пример
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array")> -1;
}
Или даже проще, вы можете проверить, если объект является функцией массива:
Пример
function isArray(myArray) {
return myArray.constructor
=== Array;
}
Можно проверить свойство конструктора, чтобы выяснить, является ли объект датой (содержит слово "Date"):
Пример
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date")> -1;
}
Или даже проще, вы можете проверить, если объект является функцией даты:
Пример
function isDate(myDate) {
return myDate.constructor === Date;
}
Преобразование типа JavaScript
Переменные JavaScript могут быть преобразованы в новую переменную и другой тип данных:
- С помощью функции JavaScript
- Автоматически с помощью самого JavaScript
Преобразование чисел в строки
Глобальный метод String () может преобразовать числа в строки.
Его можно использовать для любого типа чисел, литералов, переменных или выражений:
Пример
String(x) // returns a string from a number variable x
String(123) // returns a string from a number literal 123
String(100 + 23) // returns a string from a number from an expression
Метод Number ToString () делает то же самое.
Пример
x.toString()
(123).toString()
(100 + 23).toString()
В методах нумерацииглав вы найдете больше методов, которые можно использовать для преобразования чисел в строки:
Метод | Описание |
---|---|
toExponential() | Возвращает строку с округленным числом и записью с использованием экспоненциальной нотации. |
toFixed() | Возвращает строку с округленным числом и записью с указанным числом десятичных знаков. |
toPrecision() | Возвращает строку с номером, записанным с заданной длиной |
Преобразование логических значений в строки
Глобальный метод String () может преобразовать логические значения в строки.
String(false) // returns "false"
String(true) // returns "true"
Логический метод ToString () делает то же самое.
false.toString() // returns "false"
true.toString() // returns "true"
Преобразование дат в строки
Глобальная строка метода () может преобразовать даты в строки.
String(Date()) // returns "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"
Метод Date ToString () делает то же самое.
Пример
Date().toString() // returns "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"
В разделе методы даты, вы найдете больше методов, которые могут быть использованы для преобразования дат в строки:
Метод | Описание |
---|---|
getDate() | Получить день в виде числа (1-31) |
getDay() | Получить день недели номер (0-6) |
getFullYear() | Получить четыре цифры года (гггг) |
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") // returns 3.14
Number(" ") // returns 0
Number("") // returns 0
Number("99 88") // returns NaN
В методах нумерацииглав вы найдете больше методов, которые можно использовать для преобразования строк в числа:
Метод | Описание |
---|---|
parseFloat() | Выполняет синтаксический анализ строки и возвращает число с плавающей запятой |
parseInt() | Анализирует строку и возвращает целое число |
Унарный оператор +
унарный оператор + можно использовать для преобразования переменной в число:
Пример
var y = "5";
// y is a string
var x = + y;
// x is a number
Если переменная не может быть преобразована, она все равно станет номером, но со значением NaN (не числом):
Пример
var y = "John";
// y is a string
var x = + y; // x is a number (NaN)
Преобразование логических значений в числа
Глобальный метод Number () также может преобразовать логические значения в числа.
Number(false) // returns 0
Number(true) // returns 1
Преобразование дат в числа
Глобальный метод Number () может использоваться для преобразования дат в числа.
d = new Date();
Number(d) // returns 1404568027739
Метод Date время () делает то же самое.
d = new Date();
d.getTime() // returns 1404568027739
Автоматическое преобразование типов
Когда JavaScript пытается работать с "неверным" типом данных, он пытается преобразовать значение в "правый" тип.
Результат не всегда то, что вы ожидаете:
5 + null // returns 5 because null is converted to 0
"5" + null // returns "5null" because null is converted to "null"
"5" + 2 // returns
"52" because 2 is converted to "2"
"5" - 2 // returns 3 because "5" is converted to 5
"5" * "2" // returns
10 because "5" and "2" are
converted to 5 and 2
Автоматическая конвертация строк
JavaScript автоматически вызывает функцию ToString () переменной при попытке «вывести» объект или переменную:
document.getElementById("demo").innerHTML = myVar;
// if myVar = {name:"Fjohn"} // toString converts to "[object Object]"
// if myVar = [1,2,3,4] // toString converts to "1,2,3,4"
// if myVar = new Date() // toString converts to "Fri Jul 18 2014 09:08:55 GMT+0200"
Числа и логические значения также преобразуются, но это не очень заметно:
// if myVar = 123 // toString converts to "123"
// if myVar = true // toString converts to "true"
// if myVar = false // toString converts to "false"
Таблица преобразования типа JavaScript
В этой таблице показан результат преобразования различных значений JavaScript в число, строку и логическое значение:
Original Value |
Converted to Number |
Converted to String |
Converted to Boolean |
Try it |
---|---|---|---|---|
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 |
Значения в кавычках обозначают строковые значения.
Красные значения обозначают значения (некоторые), которые программисты могут не ожидать.