тип JavaScript
В JavaScript есть 5 различных типов данных, которые могут содержать значения:
string
number
boolean
object
function
Существует 6 типов объектов:
Object
Date
Array
String
Number
Boolean
И 2 типа данных, которые не могут содержать значений:
null
undefined
Тип оператора
Вы можете использовать typeof
оператор, чтобы найти тип данных переменной JavaScript.
Пример
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 — число
- Тип данных массива — объект
- Тип данных даты - объект
- Тип данных null является объектом
- Тип данных неопределенной переменной не определен *
- Тип данных переменной, которой не присвоено значение, также не определен *
Вы не можете использовать typeof
, чтобы определить, является ли объект JavaScript массивом (или датой).
Примитивные данные
Примитивное значение данных — это одно простое значение данных без дополнительных свойств и методов.
Оператор typeof
может вернуть один из этих примитивных типов:
string
number
boolean
undefined
Пример
typeof "John" // Returns
"string"
typeof 3.14 // Returns
"number"
typeof true // Returns
"boolean"
typeof false // Returns
"boolean"
typeof x
// Returns "undefined" (if x has no value)
Сложные данные
Оператор typeof
может возвращать один из двух сложных типов:
function
object
Оператор typeof
возвращает "object" для объектов, массивов и null.
Оператор typeof
не возвращает «объект» для функций.
Пример
typeof {name:'John', age:34} // Returns "object"
typeof [1,2,3,4]
// Returns "object" (not "array", see note below)
typeof null // Returns
"object"
typeof function myFunc(){} // Returns "function"
Оператор typeof
возвращает " object
" для массивов, потому что в JavaScript массивы являются объектами.
Тип данных typeof
Оператор typeof
не является переменной. Это оператор. Операторы ( + - * / ) не имеют никакого типа данных.
Но typeof
оператор всегда возвращает строку (содержащую тип операнда).
Свойство конструктора
Свойство constructor
возвращает функцию-конструктор для всех переменных 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;
}
Или, что еще проще, вы можете проверить, является ли объект функцией Date :
Пример
function isDate(myDate) {
return myDate.constructor === Date;
}
Неопределенный
В JavaScript переменная без значения имеет значение undefined
. Тип тоже undefined
.
Пример
let car; // Value is undefined,
type is undefined
Любую переменную можно очистить, присвоив ей значение undefined
. Тип тоже будет undefined
.
Пример
car = undefined; // Value is undefined,
type is undefined
Пустые значения
Пустое значение не имеет ничего общего с undefined
.
Пустая строка имеет допустимое значение и тип.
Пример
let car = ""; //
The value is
"", the typeof is "string"
Нулевой
В JavaScript null
это «ничего». Это должно быть что-то, чего не существует.
К сожалению, в JavaScript типом данных null
является объект.
Вы можете считать это ошибкой в JavaScript, которая typeof null
является объектом. Это должно быть null
.
Вы можете очистить объект, установив для него значение null
:
Пример
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null; //
Now value is null,
but type is still an object
Вы также можете очистить объект, установив для него значение undefined
:
Пример
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined; //
Now both value and type is undefined
Разница между неопределенным и нулевым
undefined
и null
равны по значению, но различны по типу:
typeof undefined
// undefined
typeof null
// object
null === undefined
// false
null == undefined
// true