САЙТ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ НА РУССКОМ ЯЗЫКЕ
×

JS Учебник

JS Главная JS Введение JS Установка JS Вывод JS Синтаксис JS Заявления JS Комментарии JS Переменные JS Операторы JS Арифметика JS Присваивания JS Типы данных JS Функции JS Объекты JS Область JS События JS Строки JS Методы строк JS Числа JS Методы чисел JS Массивы JS Методы массива JS Сортировка массива JS Итерация массива JS Даты JS Формат даты JS Метод получения дат JS Методы набора... JS Математические... JS Случайные числа JS Булевы JS Сравнение... JS Заявления if...else JS Заявление switch JS Цикл for JS Цикл while JS Заявление break... JS Преобразование... JS Битовые... JS Регулярные выражения JS Ошибки JS Отладчик JS Подъемный JS Строгий JS Ключевое слово this JS Руководство стиля JS Практика JS Распространенные ошибки JS Эффективность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS JSON

JS Формы

JS Формы JS Формы API

JS Объекты

Определение объекта Свойства объекта Методы объекта Доступ к объекту Конструкторы объекта Прототипы объекта Объект ECMAScript 5

JS Функции

Определение функции Параметры функции Вызов Функции Вызвать Функцию Применение функции Закрытие Функции

JS HTML DOM

DOM Введение DOM Методы DOM Документы DOM Элементы DOM HTML DOM CSS DOM Анимация DOM События DOM Слушатель события DOM Навигация DOM Узлы DOM Коллекции DOM Список узлов

JS Браузера BOM

JS Окно JS Экран JS Местоположение JS История JS Навигатор JS Всплывающее окна JS Синхронизация JS Cookies

JS AJAX

AJAX Введение AJAX XMLHttp AJAX Запрос AJAX Ответ AJAX XML Файл AJAX PHP AJAX ASP AJAX База данных AJAX Приложения AJAX Примеры

JS JSON

JSON Введение


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:49}  // Возвращается "object"
typeof new Date()             // Возвращается "object"
typeof function () {}         // Возвращается "function"
typeof myCar                  // Возвращается "undefined" *
typeof null                   // Возвращается "object"
Редактор кода »

Пожалуйста, обратите внимание:

  • Тип данных NaN является числом
  • Тип данных array является объектом
  • Тип данных date является объектом
  • Тип данных null является объектом
  • Тип данных переменной undefined является неопределенно *
  • Тип данных переменной, которой не было присвоено значение тоже неопределенно *

Нельзя использовать typeof чтобы определить, является ли объект JavaScript массивом (или датой)


Тип данных typeof

Оператор typeof не является переменной. Это оператор. Операторы + - * / не имеют никакого типа данных.

Но оператор typeof всегда возвращает строки (содержащие типы операнда).


Свойство constructor

Свойство constructor возвращает функцию конструктора для всех переменных JavaScript.

Пример

"Андрей".constructor              // Возвращается функцию String()  {[native code]}
(3.14).constructor                // Возвращается функцию Number()  {[native code]}
false.constructor                 // Возвращается функцию Boolean() {[native code]}
[1,2,3,4].constructor            // Возвращается функцию Array()   {[native code]}
{name:'Андрей',age:49}.constructor // Возвращается функцию Object()  {[native code]}
new Date().constructor           // Возвращается функцию Date()    {[native code]}
function () {}.constructor        // Возвращается функцию Function(){[native code]}
Редактор кода »

Вы можете проверить свойством constructor, чтобы узнать, является ли функция isArray() массивом (содержащие слово "Array"):

Пример

function isArray(myArray) {
  return myArray.constructor.toString().indexOf("Array") > -1;
}

Редактор кода »

Или еще проще, вы можете проверить, является ли объектом Array:

Пример

function isArray(myArray) {
  return myArray.constructor === Array;
}

Редактор кода »

Вы можете проверить свойством constructor, чтобы узнать, является ли функция isDate() датой (содержащие слово "Date")

Пример

function isDate(myDate) {
  return myDate.constructor.toString().indexOf("Date") > -1;
}

Редактор кода »

Или еще проще, вы можете проверить, является ли объектом Date:

Пример

function isDate(myDate) {
  return myDate.constructor === Date;
}

Редактор кода »


JavaScript преобразование типов

JavaScript переменные могут быть преобразованы в новую переменную и другой тип данных:

  • С помощью JavaScript функции
  • Автоматически с помощью JavaScript

Преобразование чисел в строки

Глобальный метод String() может преобразовать числа в строки.

Его можно использовать для любого типа чисел, литералов, переменных или выражений:

Пример

String(x)         // возвращает строку из числа в переменную x
String(123)       // возвращает строку из числа в литерал 123
String(100 + 23)  // возвращает строку из числа в выражения
Редактор кода »

Метод чисел toString() сделает тоже самое.

Пример

x.toString()
(123).toString()
(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 2018 15:38:19 GMT+0200 (W. Europe Daylight Time)"

Метод получения дат toString() сделать тоже самое.

Пример

Date().toString()  // "Thu Jul 17 2018 15:38:19 GMT+0200 (W. Europe Daylight Time)"

В главе Метод получения дат, вы найдете больше методов, которые можно использовать для преобразования дат в строки:

Метод Описание
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() Анализирует строку и возвращает целое число

Унарный оператор +

Унарный оператор + может использоваться для преобразования переменной в число:

Пример

var y = "5";     // y является строкой
var x = + y;      // x является числом
Редактор кода »

Если переменная не может быть преобразована, она все равно станет числом, но со значением NaN (Не число):

Пример

var y = "Андрей";  // y является строкой
var x = + y;      // x является числом (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:"Андрей"}  // метод 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 в Числа, Строки и Булевы:

Оригинальные
Значения
Преобразованный
в Числа
Преобразованный
в Строки
Преобразованный
в Булевы
Редактор кода
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 Редактор кода »

Значения в кавычках указывают строчные значения.

Значения красным цветом указывают (некоторые) значения, для программистов это не ожиданно.