Typ JavaScript
W JavaScript istnieje 5 różnych typów danych, które mogą zawierać wartości:
string
number
boolean
object
function
Istnieje 6 rodzajów obiektów:
Object
Date
Array
String
Number
Boolean
Oraz 2 typy danych, które nie mogą zawierać wartości:
null
undefined
Rodzaj operatora
Możesz użyć typeof
operatora, aby znaleźć typ danych zmiennej JavaScript.
Przykład
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"
Proszę zwrócić uwagę:
- Typ danych NaN to liczba
- Typ danych tablicy to obiekt
- Typ danych daty to obiekt
- Typ danych null to object
- Typ danych niezdefiniowanej zmiennej jest niezdefiniowany *
- Typ danych zmiennej, której nie przypisano wartości, jest również niezdefiniowany *
Nie można użyć typeof
do określenia, czy obiekt JavaScript jest tablicą (lub datą).
Dane pierwotne
Wartość danych pierwotnych to pojedyncza prosta wartość danych bez dodatkowych właściwości i metod.
Operator typeof
może zwrócić jeden z tych typów podstawowych:
string
number
boolean
undefined
Przykład
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)
Złożone dane
Operator typeof
może zwrócić jeden z dwóch złożonych typów:
function
object
Operator typeof
zwraca „object” dla obiektów, tablic i wartości null.
Operator typeof
nie zwraca „obiektu” dla funkcji.
Przykład
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"
Operator typeof
zwraca " object
" dla tablic, ponieważ w JavaScript tablice są obiektami.
Typ danych typeof
Operator typeof
nie jest zmienną. Jest operatorem. Operatory ( + - * / ) nie mają żadnego typu danych.
Ale typeof
operator zawsze zwraca łańcuch (zawierający typ operandu).
Konstruktor Właściwość
Właściwość constructor
zwraca funkcję konstruktora dla wszystkich zmiennych JavaScript.
Przykład
"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]}
Możesz sprawdzić właściwość konstruktora, aby dowiedzieć się, czy obiekt jest Array
(zawiera słowo „Array”):
Przykład
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
Lub jeszcze prościej, możesz sprawdzić, czy obiekt jest funkcją Array :
Przykład
function isArray(myArray) {
return myArray.constructor
=== Array;
}
Możesz sprawdzić właściwość konstruktora, aby dowiedzieć się, czy obiekt jest
Date
(zawiera słowo „Data”):
Przykład
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
Lub jeszcze prościej, możesz sprawdzić, czy obiekt jest funkcją Date :
Przykład
function isDate(myDate) {
return myDate.constructor === Date;
}
Nieokreślony
W JavaScript zmienna bez wartości ma wartość undefined
. Typ to również undefined
.
Przykład
let car; // Value is undefined,
type is undefined
Każdą zmienną można opróżnić, ustawiając jej wartość na undefined
. Typ będzie również undefined
.
Przykład
car = undefined; // Value is undefined,
type is undefined
Puste wartości
Pusta wartość nie ma nic wspólnego z undefined
.
Pusty ciąg ma zarówno prawidłową wartość, jak i typ.
Przykład
let car = ""; //
The value is
"", the typeof is "string"
Zero
W JavaScript null
to „nic”. To ma być coś, co nie istnieje.
Niestety w JavaScript typem danych null
jest obiekt.
Możesz uznać to za błąd w JavaScript, który typeof null
jest obiektem. Powinno być null
.
Możesz opróżnić obiekt, ustawiając go na null
:
Przykład
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null; //
Now value is null,
but type is still an object
Możesz także opróżnić obiekt, ustawiając go na undefined
:
Przykład
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined; //
Now both value and type is undefined
Różnica między niezdefiniowanym a zerowym
undefined
i null
mają taką samą wartość, ale różnią się rodzajem:
typeof undefined
// undefined
typeof null
// object
null === undefined
// false
null == undefined
// true