1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
---
title: operatore in
slug: Web/JavaScript/Reference/Operators/in
tags:
- JavaScript
- Operatori
- Operatori Relazionali
translation_of: Web/JavaScript/Reference/Operators/in
---
<div>{{jsSidebar("Operators")}}</div>
<p>L' operatore <strong><code>in</code> </strong>dà come ritorno <code>true</code> se la proprietà specificata si trova nell'oggetto preso in considerazione.</p>
<p>Restituisce <code>false</code> se la proprietà è stata eliminata tramite <code>delete</code> ma non nel caso in cui sia stata inizializzata <code>undefined</code> dal programmatore.</p>
<h2 id="Sintassi">Sintassi</h2>
<pre class="syntaxbox"><em>prop</em> in <em>nomeOggetto</em></pre>
<h3 id="Parametri">Parametri</h3>
<dl>
<dt><code>prop</code></dt>
<dd>Una stringa o simbolo che rappresenta il nome di una proprietà o indice di un array (i non-simboli verranno automaticamente convertiti in stringhe).</dd>
</dl>
<dl>
<dt><code>nomeOggetto</code></dt>
<dd>Nome di un oggetto.</dd>
</dl>
<h2 id="Descrizione">Descrizione</h2>
<p>I seguenti esempi mostrano alcuni usi dell'operatore <code>in</code>.</p>
<pre class="brush:js">// 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 <em>alberi</em>
"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
</pre>
<p>Devi specificare un oggetto sul lato destro dell'operatore <code>in</code>. Per esempio, puoi specificare una stringa creata con il costruttore String, ma non puoi specificare una stringa literal.</p>
<pre class="brush:js">var colore1 = new String("verde");
"length" in colore1 // ritorna true
var color2 = "coral";
// genera un errore (colore2 non è un oggetto String)
"length" in colore2
</pre>
<h3 id="Usare_l'operatore_in_con_le_proprietà_deleted_o_undefined">Usare l'operatore <code>in</code> con le proprietà deleted o undefined</h3>
<p>Se elimini una proprietà con l'operatore <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete" title="en-US/docs/JavaScript/Reference/Operators/Special/delete">delete</a></code>, l'operatore in ritorna <code>false</code> per quella proprietà.</p>
<pre class="brush:js">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
</pre>
<p>Se setti una proprietà ad {{jsxref("Global_Objects/undefined", "undefined")}} ma non la cancelli, l'operatore <code>in</code> darà come ritorno true per quella proprietà.</p>
<pre class="brush:js">var miaAuto = {marca: "Honda", modello: "Accord", anno: 1998};
miaAuto.marca = undefined; //inizializzo manualmente la proprietà '<em>marca'</em> 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à</pre>
<p> </p>
<p> </p>
<p> </p>
<pre class="brush:js">var alberi = new Array("sequoia", "lauro", "cedro", "quercia", "acero");
alberi[3] = undefined;
3 in alberi; // ritorna true
</pre>
<h3 id="Proprietà_ereditate">Proprietà ereditate</h3>
<p>L'operatore <code>in</code> ritorna <code>true</code> per proprietà ereditate tramite prototipi.</p>
<pre class="brush:js">"toString" in {}; // returns true
</pre>
<h2 id="Specifiche">Specifiche</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-relational-operators', 'Relational Operators')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ES6', '#sec-relational-operators', 'Relational Operators')}}</td>
<td>{{Spec2('ES6')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ES5.1', '#sec-11.8.7', 'The in Operator')}}</td>
<td>{{Spec2('ES5.1')}}</td>
<td> </td>
</tr>
<tr>
<td>{{SpecName('ES3', '#sec-11.8.7', 'The in Operator')}}</td>
<td>{{Spec2('ES3')}}</td>
<td>Definizione iniziale. Implementato in JavaScript 1.4.</td>
</tr>
</tbody>
</table>
<h2 id="Compatibilità_con_i_browser">Compatibilità con i browser</h2>
<p>{{CompatibilityTable}}</p>
<div id="compat-desktop">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Chrome</th>
<th>Firefox (Gecko)</th>
<th>Edge</th>
<th>Internet Explorer</th>
<th>Opera</th>
<th>Safari</th>
</tr>
<tr>
<td>Basic support</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
</tr>
</tbody>
</table>
</div>
<div id="compat-mobile">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Android</th>
<th>Chrome for Android</th>
<th>Firefox Mobile (Gecko)</th>
<th>IE Mobile</th>
<th>Opera Mobile</th>
<th>Safari Mobile</th>
</tr>
<tr>
<td>Basic support</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatVersionUnknown}}</td>
</tr>
</tbody>
</table>
</div>
<h2 id="Vedi_anche">Vedi anche</h2>
<ul>
<li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a></code></li>
<li><code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete" title="en-US/docs/JavaScript/Reference/Operators/Special/delete">delete</a></code></li>
<li>{{jsxref("Object.prototype.hasOwnProperty()")}}</li>
<li>{{jsxref("Reflect.has()")}}</li>
<li><a href="/en-US/docs/Enumerability_and_ownership_of_properties" title="/en-US/docs/Enumerability_and_ownership_of_properties">Enumerability and ownership of properties</a></li>
</ul>
|