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

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 Ключевое слово let JS Константы JS Функция стрелки JS Классы JS Отладчик JS Руководство стиля JS Практика JS Распространенные ошибки JS Эффективность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS Версия 2016 JS Версия 2017 JS JSON

JS Формы

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

JS Объекты

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

JS Функции

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

JS Прочее

Классы введение Наследование класса Статические методы... JS Обратный вызов JS Асинхронный JS Обещания JS Асинхронный синтаксис

JS HTML DOM

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

JS Браузера BOM

JS Window 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 Введение JSON Синтаксис JSON или XML JSON Типы данных JSON Парсинг JSON Строки JSON Объекты JSON Массивы JSON PHP JSON HTML JSON JSONP

JS Веб API

API - Введение API - История API - Хранилище API - Работник API - Извлечь файл API - Геолокации

JS или jQuery

jQuery HTML Селекторы jQuery HTML Элементы jQuery CSS Стили jQuery HTML DOM

JS Примеры

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

JS Справочник

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


На сайте нет рекламы

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

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



Тип данных typeof

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

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


Свойство constructor

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

Пример

"John".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:'John',age:34}.constructor  // Возвращает функцию Object()  {[native code]}
new Date().constructor            // Возвращает функцию Date()    {[native code]}
function () {}.constructor        // Возвращает function Function(){[native code]}
Попробуйте сами »

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

Пример

function isArray(myArray) {
  return myArray.constructor.toString().indexOf("Массив") > -1;
}

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

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

Пример

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

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

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

Пример

function isDate(myDate) {
  return myDate.constructor.toString().indexOf("Дата") > -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 2014 15:38:19 GMT+0200 (западное европейское летнее время)"

Метод Date 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() Разбирает строку и возвращает целое число

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

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

Пример

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

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

Пример

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 пытается работать с "неправильным" типом данных, он пытается преобразовать значение в "правильный" тип.

The result is not always what you expect:

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 Попробовать »

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

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