typ JavaScriptu
V JavaScriptu existuje 5 různých datových typů, které mohou obsahovat hodnoty:
string
number
boolean
object
function
Existuje 6 typů objektů:
Object
Date
Array
String
Number
Boolean
A 2 datové typy, které nemohou obsahovat hodnoty:
null
undefined
Typ Operátora
Operátor můžete použít typeof
k nalezení datového typu proměnné JavaScriptu.
Příklad
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"
Dodržujte prosím:
- Datový typ NaN je číslo
- Datový typ pole je objekt
- Datový typ data je objekt
- Datový typ null je objekt
- Datový typ nedefinované proměnné není definován *
- Datový typ proměnné, které nebyla přiřazena hodnota, také není definován *
Nemůžete použít typeof
k určení, zda je objekt JavaScriptu pole (nebo datum).
Primitivní data
Primitivní datová hodnota je jednoduchá datová hodnota bez dalších vlastností a metod.
Operátor typeof
může vrátit jeden z těchto primitivních typů:
string
number
boolean
undefined
Příklad
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)
Komplexní data
Operátor typeof
může vrátit jeden ze dvou komplexních typů:
function
object
Operátor typeof
vrací "objekt" pro objekty, pole a null.
Operátor typeof
nevrací "objekt" pro funkce.
Příklad
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"
Operátor typeof
vrací " object
" pro pole, protože v JavaScriptu jsou pole objekty.
Datový typ typu
Operátor typeof
není proměnná. Je to operátor. Operátory ( + - * / ) nemají žádný datový typ.
typeof
Operátor však vždy vrací řetězec (obsahující typ operandu).
Vlastnost konstruktoru
Vlastnost constructor
vrací funkci konstruktoru pro všechny proměnné JavaScriptu.
Příklad
"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]}
Můžete zkontrolovat vlastnost konstruktoru a zjistit, zda je objekt Array
(obsahuje slovo "Array"):
Příklad
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
Nebo ještě jednodušeji můžete zkontrolovat, zda je objekt funkcí Array :
Příklad
function isArray(myArray) {
return myArray.constructor
=== Array;
}
Můžete zkontrolovat vlastnost konstruktoru a zjistit, zda je objekt
Date
(obsahuje slovo "Datum"):
Příklad
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
Nebo ještě jednodušeji můžete zkontrolovat, zda je objekt funkcí Date :
Příklad
function isDate(myDate) {
return myDate.constructor === Date;
}
Nedefinováno
V JavaScriptu má proměnná bez hodnoty hodnotu undefined
. Typ je také undefined
.
Příklad
let car; // Value is undefined,
type is undefined
Libovolnou proměnnou lze vyprázdnit nastavením hodnoty na undefined
. Typ bude také undefined
.
Příklad
car = undefined; // Value is undefined,
type is undefined
Prázdné hodnoty
Prázdná hodnota nemá nic společného s undefined
.
Prázdný řetězec má právní hodnotu i typ.
Příklad
let car = ""; //
The value is
"", the typeof is "string"
Nula
V JavaScriptu null
je „nic“. Má to být něco, co neexistuje.
Bohužel v JavaScriptu je datovým typem null
objekt objekt.
Můžete to považovat za chybu v JavaScriptu, která typeof null
je objektem. Mělo by být null
.
Objekt můžete vyprázdnit nastavením na null
:
Příklad
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null; //
Now value is null,
but type is still an object
Objekt můžete také vyprázdnit nastavením na undefined
:
Příklad
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined; //
Now both value and type is undefined
Rozdíl mezi Undefined a Null
undefined
a null
jsou stejné v hodnotě, ale liší se v typu:
typeof undefined
// undefined
typeof null
// object
null === undefined
// false
null == undefined
// true