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

JavaScript учебник

JS HOME JS Introduction JS Where To JS Output JS Statements JS Syntax JS Comments JS Variables JS Operators JS Arithmetic JS Assignment JS Data Types JS Functions JS Objects JS Scope JS Events JS Strings JS String Methods JS Numbers JS Number Methods JS Arrays JS Array Methods JS Array Sort JS Array Iteration JS Dates JS Date Formats JS Date Get Methods JS Date Set Methods JS Math JS Random JS Booleans JS Comparisons JS Conditions JS Switch JS Loop For JS Loop While JS Break JS Type Conversion JS Bitwise JS RegExp JS Errors JS Debugging JS Hoisting JS Strict Mode JS this Keyword JS Style Guide JS Best Practices JS Mistakes JS Performance JS Reserved Words JS Versions JS Version ES5 JS Version ES6 JS JSON

JS Forms

JS Forms Forms API

JS Objects

Object Definitions Object Properties Object Methods Object Constructors Object Prototypes

JS Functions

Function Definitions Function Parameters Function Invocation Function Call Function Apply Function Closures

JS HTML DOM

DOM Intro DOM Methods DOM Document DOM Elements DOM HTML DOM CSS DOM Animations DOM Events DOM Event Listener DOM Navigation DOM Nodes DOM Collections DOM Node Lists

JS Browser BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS AJAX

AJAX Intro AJAX XMLHttp AJAX Request AJAX Response AJAX XML File AJAX PHP AJAX ASP AJAX Database AJAX Applications

JS JSON

JSON Intro JSON Syntax JSON vs XML JSON Data Types JSON Objects JSON Arrays JSON Parse JSON Stringify JSON PHP JSON HTML JSON JSONP

JS References

JavaScript Objects HTML DOM Objects


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

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

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