operatore in

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

Compatibilità con i browser

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
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)

Vedi anche