Maison >interface Web >js tutoriel >Utilisez try-catch pour déterminer si une variable a été déclarée, non déclarée ou non attribuée.

Utilisez try-catch pour déterminer si une variable a été déclarée, non déclarée ou non attribuée.

WBOY
WBOYoriginal
2016-05-16 16:55:391136parcourir

Le but est que si une variable a été déclarée mais non affectée, elle peut être affectée directement ; et la portée de la variable ne peut pas être modifiée

Si elle n'est pas déclarée, il suffit de la re-déclarer
.
J'ai cherché sur Internet, une méthode courante est if(typeof(a)=='undefined'){var a='ss';},

Mais cette méthode retournera vrai pour les données non déclarées ou variables non affectées déclarées. Et si oui :

Copiez le code Le code est le suivant :

var a; 🎜>function f(){
if(typeof(a)=='undefined')
{var a=1;}
}
f(); a);


affichera undefined car f() déclare uniquement une variable locale du même nom.

Mais s'il s'agit d'une variable déclarée non affectée : if (noValueV==null), elle retournera true

Variable non déclarée : if (noDeclareV==null), une erreur sera signalée ; .

Donc ça fonctionne comme ça :


function f ( ){
if(typeof(v)=='undefined'){
try{
if(v==null)//Indique que v est déclaré mais non attribué
v=1; //Si v est une variable globale, cela ne changera pas sa portée
}
catch(err){//Indique que v n'est pas déclaré
var v;v=2 ;
}
}
console.log(v);
}
f( );


C'est également faux, car js a la fonctionnalité de « déclaration à l'avance », c'est-à-dire les fonctions. Les variables déclarées dans une fonction sont visibles dans cette fonction et ses sous-fonctions, quel que soit l'endroit où elles sont déclarées dans la fonction.

Donc, en raison de la var v; ci-dessus, quelle que soit la situation, seul try est utilisé.

Modifiez-le :


function f( ){
if(typeof(v)=='undefined'){
try{
if(v==null)//Indique que v est déclaré mais non attribué
v=1; / /Si v est une variable globale, cela ne changera pas sa portée
}
catch(err){//Indique que v n'est pas déclaré
eval('var v');v =2; / /C'est différent ici
}
}
console.log(v);
}
f( );


C'est ça.

est écrit comme une fonction de jugement, renvoyer 'noDeclare' signifie que la variable n'a pas été déclarée, 'noValue' signifie que la variable a été déclarée mais n'a pas reçu de valeur, 'hasValue' signifie que la variable a été déclaré et s'est vu attribuer une valeur :


fonction f(v){
if(typeof(v)=='undefined'){
try{
if(v==null)
return 'noValue'
}
catch(err){
return 'noDeclare';
}
}
else return 'hasValue'
}
var a; a));
a=0;
console.log(f(a ));
console.log(f(b));


Faux encore.. . console.log(f(b)); signalera une erreur... ...
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn