tipo JavaScript
In JavaScript ci sono 5 diversi tipi di dati che possono contenere valori:
string
number
boolean
object
function
Esistono 6 tipi di oggetti:
Object
Date
Array
String
Number
Boolean
E 2 tipi di dati che non possono contenere valori:
null
undefined
Il tipo di operatore
È possibile utilizzare l' typeof
operatore per trovare il tipo di dati di una variabile JavaScript.
Esempio
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"
Si prega di osservare:
- Il tipo di dati di NaN è numero
- Il tipo di dati di un array è oggetto
- Il tipo di dati di una data è oggetto
- Il tipo di dati di null è oggetto
- Il tipo di dati di una variabile non definita non è definito *
- Anche il tipo di dati di una variabile a cui non è stato assegnato un valore è indefinito *
Non è possibile utilizzare typeof
per determinare se un oggetto JavaScript è un array (o una data).
Dati primitivi
Un valore di dati primitivo è un singolo valore di dati semplice senza proprietà e metodi aggiuntivi.
L' typeof
operatore può restituire uno di questi tipi primitivi:
string
number
boolean
undefined
Esempio
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)
Dati complessi
L' typeof
operatore può restituire uno di due tipi complessi:
function
object
L' typeof
operatore restituisce "oggetto" per oggetti, matrici e null.
L' typeof
operatore non restituisce "oggetto" per le funzioni.
Esempio
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"
L' typeof
operatore restituisce " object
" per gli array perché in JavaScript gli array sono oggetti.
Il tipo di dati di typeof
L' typeof
operatore non è una variabile. È un operatore. Gli operatori (+ - * / ) non hanno alcun tipo di dati.
Tuttavia, l' typeof
operatore restituisce sempre una stringa (contenente il tipo dell'operando).
La proprietà del costruttore
La constructor
proprietà restituisce la funzione di costruzione per tutte le variabili JavaScript.
Esempio
"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]}
Puoi controllare la proprietà del costruttore per scoprire se un oggetto è un Array
(contiene la parola "Array"):
Esempio
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
O ancora più semplice, puoi verificare se l'oggetto è una funzione Array :
Esempio
function isArray(myArray) {
return myArray.constructor
=== Array;
}
Puoi controllare la proprietà del costruttore per scoprire se un oggetto è un
Date
(contiene la parola "Data"):
Esempio
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
O ancora più semplice, puoi verificare se l'oggetto è una funzione Data :
Esempio
function isDate(myDate) {
return myDate.constructor === Date;
}
Non definito
In JavaScript, una variabile senza valore ha il valore undefined
. Il tipo è anche undefined
.
Esempio
let car; // Value is undefined,
type is undefined
Qualsiasi variabile può essere svuotata, impostando il valore su undefined
. Il tipo sarà anche undefined
.
Esempio
car = undefined; // Value is undefined,
type is undefined
Valori vuoti
Un valore vuoto non ha nulla a che fare con undefined
.
Una stringa vuota ha sia un valore legale che un tipo.
Esempio
let car = ""; //
The value is
"", the typeof is "string"
Nullo
In JavaScript null
è "niente". Dovrebbe essere qualcosa che non esiste.
Sfortunatamente, in JavaScript, il tipo di dati di null
è un oggetto.
Puoi considerarlo un bug in JavaScript che typeof null
è un oggetto. Dovrebbe essere null
.
Puoi svuotare un oggetto impostandolo su null
:
Esempio
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null; //
Now value is null,
but type is still an object
Puoi anche svuotare un oggetto impostandolo su undefined
:
Esempio
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined; //
Now both value and type is undefined
Differenza tra indefinito e nullo
undefined
e null
sono uguali in valore ma differenti nel tipo:
typeof undefined
// undefined
typeof null
// object
null === undefined
// false
null == undefined
// true