--- 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
prop
nomeOggetto
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
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...in
delete