ЛУЧШИЙ САЙТ ДЛЯ ВЕБ-РАЗРАБОТЧИКОВ

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 Switch JS Цикл For JS Цикл While JS Прерывание JS Преобразование типов JS Побитовые JS Регулярные выражения JS Ошибки JS Область действия JS Подъём JS Строгий режим JS Ключевое слово this JS Ключевое слово Let JS Ключевое слово Const JS Функции стрелок JS Классы JS Отладка JS Гид по стилю JS Лучшие практики JS Ошибки JS Производительность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS JSON

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 Куки

JS AJAX

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

JS JSON

JSON Введение JSON Синтаксис JSON и XML JSON Типы данных JSON Анализ JSON Stringify JSON Объекты JSON Массивы JSON PHP JSON HTML JSON JSONP

JS и jQuery

jQuery Селекторы jQuery HTML jQuery CSS jQuery DOM

JS Примеры

JS Примеры JS HTML DOM JS HTML Input JS HTML Объекты JS HTML События JS Броузер JS Упражнения JS Викторина JS Сертификат

JS Справочники

JavaScript Объекты HTML DOM Объекты

JavaScript. Уроки для начинающих

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


Number() преобразуется в Number, String() преобразуется в String, Boolean() преобразуется в Boolean.


JavaScript Типы данных

В JavaScript есть 5 различных типов данных, которые могут содержать значения:

  • string
  • number
  • boolean
  • object
  • function

Есть 6 типов объектов:

  • Object
  • Date
  • Array
  • String
  • Number
  • Boolean

И 2 типа данных, которые не могут содержать значения:

  • null
  • undefined

Оператор typeof

Вы можете использовать оператор typeof чтобы определить тип данных переменной JavaScript.

Пример

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 - это число
  • Тип данных Array (массива) - это объект
  • Тип данных Date (даты) - это объект
  • Тип данных null (ноль) - это объект
  • Тип данных неопределенной переменной является undefined *
  • Тип данных переменной, которой не было присвоено значение, также является undefined *

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


Оператор типа данных typeof

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

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


Свойство constructor (конструктора)

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

Пример

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

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

Пример

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

Попробуйте сами »

Или даже проще, вы можете проверить, является ли объект Array функцией:

Пример

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

Попробуйте сами »

Вы можете проверить свойство конструктора, чтобы узнать, является ли объект Date (содержит слово "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)  // возвращает строку из числа из выражения
Попробуйте сами »

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

Пример

x.toString()
(123).toString()
(100 + 23).toString()
Попробуйте сами »

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

Метод Описание
toExponential() Возвращает строку с округленным и записанным числом с использованием экспоненциальной записи.
toFixed() Возвращает строку с округленным числом и записанным с указанным количеством десятичных знаков.
toPrecision() Возвращает строку с числом, записанным с указанной длиной

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

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

String(false)      // возвращает "false"
String(true)       // возвращает "true"

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

false.toString()   // возвращает "false"
true.toString()    // возвращает "true"

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

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

String(Date())  // возвращает "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"

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

Пример

Date().toString()  // возвращает "Thu Jul 17 2014 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 (Not a Number / Не число).

Number("3.14")    // возвращает 3.14
Number(" ")       // возвращает 0
Number("")        // возвращает 0
Number("99 88")   // возвращает NaN

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

Метод Описание
parseFloat() Разбирает строку и возвращает число с плавающей запятой (float)
parseInt() Разбирает строку и возвращает целое число (integer)

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

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

Пример

var y = "5";      // y - это строка
var x = + y;      // x - это число
Попробуйте сами »

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

Пример

var y = "John";   // 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:"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 Попробуй это »

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

Красные значения указывают значения (некоторые из них), которые программисты могут не ожидать.