L' operatore in
dà come ritorno true
se la proprietà specificata si trova nell'oggetto preso in considerazione.
Restituisce false
se la proprietà è stata eliminata tramite delete
ma non nel caso in cui sia stata inizializzata undefined
dal programmatore.
Sintassi
prop in nomeOggetto
Parametri
prop
- Una stringa o simbolo che rappresenta il nome di una proprietà o indice di un array (i non-simboli verranno automaticamente convertiti in stringhe).
nomeOggetto
- Nome di un oggetto.
Descrizione
I seguenti esempi mostrano alcuni usi dell'operatore in
.
// Array
var alberi = ["sequoia", "lauro", "cedro", "quercia", "acero"];
0 in alberi // ritorna true
3 in alberi // ritorna true
6 in alberi // ritorna false, non ci sono proprietà in quell'indice su alberi
"bay" in alberi // ritorna false (devi specificare il
// numero dell'indice, non il valore corrispondente a quell'indice)
"length" in alberi // ritorna true (length è una proprietà degli array)
Symbol.iterator in alberi // ritorna true (gli array sono iterabili, funziona solo in ES6+)
// Oggetti predefiniti
"PI" in Math // ritorna true, "PI" è il nome di una proprietà dell'oggetto Math
// Oggetti personalizzati
var miaAuto = {marca: "Honda", modello: "Accord", anno: 1998};
"marca" in miaAuto // ritorna true
"modello" in miaAuto // ritorna true
Devi specificare un oggetto sul lato destro dell'operatore in
. Per esempio, puoi specificare una stringa creata con il costruttore String, ma non puoi specificare una stringa literal.
var colore1 = new String("verde");
"length" in colore1 // ritorna true
var color2 = "coral";
// genera un errore (colore2 non è un oggetto String)
"length" in colore2
Usare l'operatore in
con le proprietà deleted o undefined
Se elimini una proprietà con l'operatore delete
, l'operatore in ritorna false
per quella proprietà.
var miaAuto = {marca: "Honda", modello: "Accord", anno: 1998};
delete miaAuto.marca;
"marca" in miaAuto; // ritorna false
var alberi = new Array("sequoia", "lauro", "cedro", "quercia", "acero");
delete alberi[3];
3 in alberti; // ritorna false
Se setti una proprietà ad undefined
ma non la cancelli, l'operatore in
darà come ritorno true per quella proprietà.
var miaAuto = {marca: "Honda", modello: "Accord", anno: 1998};
miaAuto.marca = undefined; //inizializzo manualmente la proprietà 'marca' undefined
"marca" in miaAuto; // ritorna true, non è stato usato usato delete sulla proprietà
delete miaAuto.marca;
"marca" in miaAuto // return false, è stata eliminata la proprietà
var alberi = new Array("sequoia", "lauro", "cedro", "quercia", "acero");
alberi[3] = undefined;
3 in alberi; // ritorna true
Proprietà ereditate
L'operatore in
ritorna true
per proprietà ereditate tramite prototipi.
"toString" in {}; // returns true
Specifiche
Specification | Status | Comment |
---|---|---|
ECMAScript Latest Draft (ECMA-262) The definition of 'Relational Operators' in that specification. |
Draft | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Relational Operators' in that specification. |
Standard | |
ECMAScript 5.1 (ECMA-262) The definition of 'The in Operator' in that specification. |
Standard | |
ECMAScript 3rd Edition (ECMA-262) The definition of 'The in Operator' in that specification. |
Standard | Definizione iniziale. Implementato in JavaScript 1.4. |
Compatibilità con i browser
Feature | Chrome | Firefox (Gecko) | Edge | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |