JavaScript typeof
В 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
может возвращать один из этих примитивных типов:
string
number
boolean
undefined
Пример
typeof "John" // Возвращает
"string"
typeof 3.14 // Возвращает
"number"
typeof true // Возвращает
"boolean"
typeof false // Возвращает
"boolean"
typeof x
// Возвращает "undefined" (если x не имеет значения)
Попробуйте сами »
Комплексные данные
Оператор typeof
может возвращать один из двух сложных типов:
function
object
Оператор typeof
возвращает "object" для объектов, массивов и null.
Оператор typeof
не возвращает "object" для функций.
Пример
typeof {name:'John', age:34} // Возвращает "object"
typeof [1,2,3,4]
// Возвращает "object" (не "массив", см. примечание ниже)
typeof null // Возвращает "object"
typeof function myFunc(){} // Возвращает "function"
Попробуйте сами »
Оператор typeof
возвращает "object
" для массивов, потому что в JavaScript массивы являются объектами.
Тип данных typeof
Оператор typeof
не является переменной. Это оператор. Операторы (+ - * / ) не имеют типа данных.
Но оператор typeof
всегда возвращает строку (содержащую тип операнда).
Свойство constructor
Свойство constructor
возвращает функцию конструктора для всех переменных JavaScript.
Пример
"John".constructor
// Возвращает function String() {[native code]}
(3.14).constructor
// Возвращает function Number() {[native code]}
false.constructor // Возвращает function Boolean() {[native code]}
[1,2,3,4].constructor
// Возвращает function Array() {[native code]}
{name:'John',age:34}.constructor
// Возвращает function Object() {[native code]}
new Date().constructor // Возвращает function Date() {[native code]}
function () {}.constructor // Возвращает function Function(){[native code]}
Попробуйте сами »
Вы можете проверить свойство конструктора, чтобы узнать, является ли объект Array
(содержит слово "Array"):
Пример
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
Или, что ещё проще, вы можете проверить, является ли объект Array функцией:
Вы можете проверить свойство конструктора, чтобы узнать, является ли объект Date
(содержит слово "Date"):
Пример
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
Или, что ещё проще, вы можете проверить, является ли объект Date функцией:
Undefined
В JavaScript переменная без значения имеет значение undefined
. Тип также является undefined
.
Любую переменную можно очистить, установив значение на undefined
.
Тип также будет undefined
.
Пустые значения
Пустое значение не имеет ничего общего с undefined
.
Пустая строка имеет как допустимое значение, так и тип.
Null
В JavaScript null
означает "ничего". Это должно быть что-то, чего не существует.
К сожалению, в JavaScript тип данных null
является объектом.
Вы можете считать ошибкой в JavaScript то, что typeof null
является объектом. Должен быть null
.
Вы можете очистить объект, установив для него null
:
Пример
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null; //
Теперь значение равно null, но тип по-прежнему является объектом
Попробуйте сами »
Вы также можете очистить объект, установив для него undefined
:
Пример
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined; //
Теперь и значение, и тип не определены
Попробуйте сами »
Различие между Undefined и Null
undefined
и null
равны по значению, но различаются по типу:
typeof undefined
// undefined
typeof null
// object
null === undefined
// false
null == undefined
// true
Попробуйте сами »