--- title: operatore in slug: Web/JavaScript/Reference/Operators/in tags: - JavaScript - Operatori - Operatori Relazionali translation_of: Web/JavaScript/Reference/Operators/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.
prop in nomeOggetto
propnomeOggettoI 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
in con le proprietà deleted o undefinedSe 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 {{jsxref("Global_Objects/undefined", "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
L'operatore in ritorna true per proprietà ereditate tramite prototipi.
"toString" in {}; // returns true
| Specification | Status | Comment |
|---|---|---|
| {{SpecName('ESDraft', '#sec-relational-operators', 'Relational Operators')}} | {{Spec2('ESDraft')}} | |
| {{SpecName('ES6', '#sec-relational-operators', 'Relational Operators')}} | {{Spec2('ES6')}} | |
| {{SpecName('ES5.1', '#sec-11.8.7', 'The in Operator')}} | {{Spec2('ES5.1')}} | |
| {{SpecName('ES3', '#sec-11.8.7', 'The in Operator')}} | {{Spec2('ES3')}} | Definizione iniziale. Implementato in JavaScript 1.4. |
{{CompatibilityTable}}
| Feature | Chrome | Firefox (Gecko) | Edge | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| Basic support | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
for...indelete