Come devo verificare se una variabile è definita?Verifica se una variabile è definita in javascript?
if //variable is defined
//do this
else
//do this
Come devo verificare se una variabile è definita?Verifica se una variabile è definita in javascript?
if //variable is defined
//do this
else
//do this
if (typeof variable !== 'undefined') {
// ..
}
else
{
// ..
}
trovare maggiori spiegazioni qui:
si può usare qualcosa di simile
if (typeof varname != 'undefined')
{
//do this
}
else
{
//do this
}
È sufficiente controllare il tipo.
if(typeof yourVar !== "undefined"){
alert("defined");
}
else{
alert("undefined");
}
Utilizzare l'operatore in
.
'myVar' in window; // for global variables only
typeof
controlli torneranno vero per una variabile se,
undefined
, oI seguenti esempi illustrano il secondo e il terzo punto.
// defined, but not initialized
var myVar;
typeof myVar; // undefined
// defined, and initialized to undefined
var myVar = undefined;
typeof myVar; // undefined
È possibile utilizzare * nella finestra * solo nel caso particolare delle variabili globali in quanto sono anche proprietà dell'oggetto globale. Le variabili locali non hanno un oggetto variabile così accettabile. Supponendo che ci sia un oggetto finestra potrebbe essere ragionevole per i browser ma non è necessariamente vero in generale. – RobG
@RobG - non deve essere 'window' o l'oggetto globale. Al suo posto è possibile utilizzare qualsiasi oggetto. Hai sollevato un buon punto sulle variabili definite localmente non accessibili qui. Sarò interessato a scoprire se esiste un modo per determinare l'indefinito per le variabili locali in base solo al primo criterio che ho. – Anurag
Se si parla di variabili e scope, è possibile solo distinguere tra variabili globali (come sono proprietà dell'oggetto globale) e il resto. In una funzione annidata, è impossibile stabilire se un identificatore è una variabile di funzione locale o esterna perché non è possibile accedere agli oggetti variabili correlati. La risoluzione della proprietà dell'oggetto è una cosa diversa. – RobG
Utilizzare! == per un confronto rigoroso e prestazioni migliori. –
@ AmericanYak-in un * typeof * verifica l'algoritmo per la risoluzione di ['=='] (http://ecma-international.org/ecma-262/5.1/#sec-11.9.3) e ['=== '] (http://ecma-international.org/ecma-262/5.1/#sec-11.9.6) è identico poiché entrambi i valori hanno lo stesso tipo (stringa), quindi da dove proviene la migliore prestazione? – RobG
Questo errore si verifica quando 'typeof null' è' Oggetto' – nikjohn