From da78a9e329e272dedb2400b79a3bdeebff387d47 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:17 -0500 Subject: initial commit --- .../reference/global_objects/isnan/index.html | 176 +++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 files/it/web/javascript/reference/global_objects/isnan/index.html (limited to 'files/it/web/javascript/reference/global_objects/isnan') diff --git a/files/it/web/javascript/reference/global_objects/isnan/index.html b/files/it/web/javascript/reference/global_objects/isnan/index.html new file mode 100644 index 0000000000..db6ebc85d8 --- /dev/null +++ b/files/it/web/javascript/reference/global_objects/isnan/index.html @@ -0,0 +1,176 @@ +--- +title: isNaN() +slug: Web/JavaScript/Reference/Global_Objects/isNaN +translation_of: Web/JavaScript/Reference/Global_Objects/isNaN +--- +
+
+
{{jsSidebar("Objects")}}
+
+
+ +

Sommario

+ +

La funzione isNaN() determina se un valore è {{jsxref("NaN")}} o no.

+ +
+

Nota: le conversioni di tipo nella funzione isNaN seguono delle regole {{jsxref("Global_Objects/isNaN", "particolari", "#Description", 1)}}: alternativamente per determinare se un valore non è un numero si può usare la funzione {{jsxref("Number.isNaN()")}}, definito in ECMAScript 6, o l'operatore {{jsxref("Operators/typeof", "typeof")}}.

+
+ +

Sintassi

+ +
isNaN(number)
+ +

Parametri

+ +
+
number
+
Il valore da controllare.
+
+ +

Descrizione

+ +

La necessità di una funzione isNaN()

+ +

A differenza di tutti gli altri valori in JavaScript, non è possibile usare gli operatori di uguaglianza (== e ===) per determinare se un valore è {{jsxref("NaN")}} oppure no, perché entrambe le uguaglianze NaN == NaN e NaN === NaN vengono considerate false. Ecco perché è necessaria una funzione isNaN().

+ +

L'origine del valore NaN

+ +

Il valore NaN è generato da un'operazione aritmetica il cui risultato è {{jsxref("undefined")}} o un valore non rappresentabile. Tali valori non rappresentano necessariamente un valore oltre i limiti. NaN può anche essere il risultato del trasformare valori non-numerici dai quali non è possibile ottenere un numero in numeri.

+ +

Per esempio, dividere zero per zero restituisce NaN, ma dividere un qualsiasi altro numero per zero no.

+ +

Comportamenti particolari

+ +

Già dalla prima versione della specifica della funzione isNaN, il suo comportamento con valori non-numerici può confondere. Quando il parametro della funzione isNaN non è di tipo {{jsxref("Number")}}, questo viene prima trasformato in un numero. Il test per determinare se il parametro è {{jsxref("NaN")}} viene effettuato sul valore convertito. Quindi per i valori non-numerici che possono essere trasformati in un numero diverso da NaN la funzione restituisce false. La stringa vuota, per esempio, suciramente non è un numero, ma la funzione restituisce false. La confusione nasce dal fatto che il termine "not a number" (rappresentato da NaN) ha un significato per i numeri rappresentati come valori a virgola mobile IEEE-754. La funzione dovrebbe quindi essere interpretata come "È questo valore, quando convertito in un numero, un valore "Not a Number" secondo lo standard IEEE-754?"

+ +

La prossima versione di ECMAScript (ES6) definiesce la funzione {{jsxref("Number.isNaN()")}}. Number.isNaN(), che ritorna false per tutti i valori non-numerici, sarà un metodo affidabile per sapere se un numero è NaN o no. In assenza di Number.isNaN, l'espressione (x !== x) è il metodo più affidabile per determinare se un numero è NaN oppure no, perché evita i falsi positivi generati dalla funzione isNaN().

+ +

Esempi

+ +
var x = NaN;
+isNaN(x);        // true
+Number.isNaN(x); // true
+x !== x;         // true
+
+var x = undefined;
+isNaN(x);        // true, perché undefined viene convertito in NaN
+Number.isNaN(x); // false
+x !== x;         // false
+
+var x = {};
+isNaN(x);        // true, perché {} viene convertito in NaN
+Number.isNaN(x); // false
+x !== x;         // false
+
+isNaN(true);     // false, perché true viene convertito in 1
+isNaN(null);     // false, perché null viene convertito in 0
+isNaN(37);       // false
+
+// Stringhe
+isNaN("37");     // false, perché "37" viene convertito in 37
+isNaN("37.37");  // false, perché "37.37" viene convertito in 37.37
+isNaN("");       // false, perché una stringa vuota viene convertita in 0
+isNaN(" ");      // false, perché una stringa con soli spazi viene convertita in 0
+
+// !!! Ecco un esempio di falso positivo
+var x = "37ab";
+isNaN(x);        // true, perché "37ab" viene convertito in NaN
+Number.isNaN(x); // false
+x !== x;         // false
+
+// Date
+isNaN(new Date()); // false, perché una data che viene convertita in un
+                   //        numero ritorna un valore intero
+
+var x = new Date().toString();
+isNaN(x);        // true, perché il metodo new Date().toString() restituisce una
+                 //       stringa alfanumerica, che viene convertita in NaN
+Number.isNaN(x); // false
+x !== x;         // false
+ +

Specifiche

+ + + + + + + + + + + + + + + + + + + + + + + + +
SpecificaStatoCommenti
ECMAScript 1st Edition.StandardDefinizione iniziale.
{{SpecName('ES5.1', '#sec-15.1.2.4', 'isNaN')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-isnan-number', 'isNaN')}}{{Spec2('ES6')}} 
+ +

Compatibilità con i browser

+ +

{{ CompatibilityTable() }}

+ +
+ + + + + + + + + + + + + + + + + + + +
FunzionalitàChromeFirefox (Gecko)Internet ExplorerOperaSafari
Supporto di base{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FunzionalitàAndroidChrome for AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Supporto di base{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}{{ CompatVersionUnknown() }}
+
+ +

Vedi anche

+ + -- cgit v1.2.3-54-g00ecf