aboutsummaryrefslogtreecommitdiff
path: root/files/it/web/javascript/reference/global_objects/object/is/index.html
blob: ffb979fcb581c74d1e60150c9eae0cccafd0eec5 (plain)
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
---
title: Object.is()
slug: Web/JavaScript/Reference/Global_Objects/Object/is
tags:
  - Comparazione
  - Condizionale
  - Condizione
  - ECMAScript 2015
  - Equalità
  - Italiano
  - JavaScript
  - Oggetto
  - Uguaglianza
  - metodo
translation_of: Web/JavaScript/Reference/Global_Objects/Object/is
---
<div>{{JSRef}}</div>

<p>Il metodo <code><strong>Object.is()</strong></code> determina se i due parametri di input hanno lo <a href="/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness"> stesso valore</a>.</p>

<h2 id="Sintassi">Sintassi</h2>

<pre class="syntaxbox"><code>Object.is(<var>value1</var>, <var>value2</var>);</code></pre>

<h3 id="Parametri">Parametri</h3>

<dl>
 <dt><code>value1</code></dt>
 <dd>Il primo valore da comparare.</dd>
 <dt><code>value2</code></dt>
 <dd>Il secondo valore da comparare.</dd>
</dl>

<h3 id="Return_value">Return value</h3>

<p>A {{jsxref("Boolean")}} indicating whether or not the two arguments are the same value.</p>

<h2 id="Descrizione">Descrizione</h2>

<p><code>Object.is()</code> determina se <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness">due valori sono uguali</a>. Due valori sono uguali se sono :</p>

<ul>
 <li>entrambi {{jsxref("undefined")}}</li>
 <li>entrambi {{jsxref("null")}}</li>
 <li>entrambi  <code>true</code> o entrambi <code>false</code></li>
 <li>entrambi stringhe della stessa lunghezza con gli stessi caratteri</li>
 <li>entrambi lo stesso oggetto</li>
 <li>entrambi numeri ed
  <ul>
   <li>entrambi  <code>+0</code></li>
   <li>entrambi  <code>-0</code></li>
   <li>entrambi {{jsxref("NaN")}}</li>
   <li>o entrambi non sono 0 ed entrambi non sono {{jsxref("NaN")}} ed entrambi hanno lo stesso valore</li>
  </ul>
 </li>
</ul>

<p>Questo <em>non</em> è la stessa uguaglianza dell'operatore {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}. L'operatore {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} applica varie conversioni ad entrambi (se non sono dello stesso tipo) prima di testare l'uguaglianza (ad esempio, <code>"" == false</code> risultando <code>true</code>), ma <code>Object.is</code> non converte i loro valori.</p>

<p>Inoltre questo <em>non</em> è la stessa uguaglianza dell'operatore {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}. L'operatore {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}} (ed anche l'operatore {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}) trattano i numeri <code>-0</code> e <code>+0</code> come uguali e trattano {{jsxref("Number.NaN")}} differentemente da {{jsxref("NaN")}}.</p>

<h2 id="Esempi">Esempi</h2>

<pre class="brush: js">Object.is('foo', 'foo');     // true
Object.is(window, window);   // true

Object.is('foo', 'bar');     // false
Object.is([], []);           // false

var test = { a: 1 };
Object.is(test, test);       // true

Object.is(null, null);       // true

// Casi speciali
Object.is(0, -0);            // false
Object.is(-0, -0);           // true
Object.is(NaN, 0/0);         // true
</pre>

<h2 id="Polyfill">Polyfill</h2>

<pre class="brush: js">if (!Object.is) {
  Object.is = function(x, y) {
    // Algoritmo SameValue
    if (x === y) { // Steps 1-5, 7-10
      // Steps 6.b-6.e: +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
     // Step 6.a: NaN == NaN
     return x !== x &amp;&amp; y !== y;
    }
  };
}</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('ES2015', '#sec-object.is', 'Object.is')}}</td>
   <td>{{Spec2('ES2015')}}</td>
   <td>Definizione iniziale.</td>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-object.is', 'Object.is')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>

<h2 id="Compatibilità_coi_browser">Compatibilità coi browser</h2>

<div>
<div class="hidden">La compatibility table su questa pagina è generata da dati strutturali. Se vuoi contribuire per i dati, puoi visitare <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> ed inviarci una pull request.</div>

<p>{{Compat("javascript.builtins.Object.is")}}</p>
</div>

<h2 id="Vedi_anche">Vedi anche</h2>

<ul>
 <li><a href="/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness">Equality comparisons and sameness</a> (in inglese) — un paragone di tutte e tre le facilitazioni per comparare uguaglianze</li>
</ul>