JavaScript typeof
В JavaScript есть 5 различных типов данных, которые могут содержать значения:
stringnumberbooleanobjectfunction
Есть 6 типов объектов:
ObjectDateArrayStringNumberBoolean
И 2 типа данных, которые не могут содержать значения:
nullundefined
Оператор 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 может возвращать один из этих примитивных типов:
stringnumberbooleanundefined
Пример
typeof "John" // Возвращает
"string"
typeof 3.14 // Возвращает
"number"
typeof true // Возвращает
"boolean"
typeof false // Возвращает
"boolean"
typeof x
// Возвращает "undefined" (если x не имеет значения)
Попробуйте сами »
Комплексные данные
Оператор typeof может возвращать один из двух сложных типов:
functionobject
Оператор 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
Попробуйте сами »

