Le but est que si une variable est déclarée non attribuée, elle peut être attribuée directement; et la portée de la variable ne peut pas être modifiée.
Si ce n'est pas déclaré, redémarrez-le.
J'ai recherché en ligne et j'ai constaté que la méthode commune est si (typeof (a) == 'undefined') {var a = 'ss';},
Cependant, cette méthode renvoie vrai pour les variables non déclarées ou non attribuées. Et si c'est le cas:
La copie de code est la suivante:
var a;
fonction f () {
if (typeof (a) == 'undefined')
{var a = 1;}
}
f ();
console.log (a);
Undefined sera affiché car F () déclare simplement une variable locale avec le même nom.
Cependant, s'il s'agit d'une variable qui n'a pas été déclarée non attribuée: if (novaluev == null), elle reviendra vrai;
Variable non déclarée: if (NodeClarev == null), une erreur sera signalée.
Donc, cela peut être:
La copie de code est la suivante:
fonction f () {
if (typeof (v) == 'Undefined') {
essayer{
if (v == null) // indique que v est déclaré non assisté
v = 1;
}
catch (err) {// indique que v n'est pas déclaré
var v; v = 2;
}
}
console.log (v);
}
f ();
Ceci est également faux, car JS a la caractéristique de la «déclaration», c'est-à-dire que les variables déclarées dans la fonction sont visibles dans cette fonction et dans la sous-fonction de cette fonction, peu importe où elle est déclarée dans la fonction.
Donc, en raison de la var v;, en tout cas ci-dessus, vous n'essayez que.
Modifiez-le:
La copie de code est la suivante:
fonction f () {
if (typeof (v) == 'Undefined') {
essayer{
if (v == null) // indique que v est déclaré non assisté
v = 1;
}
catch (err) {// indique que v n'est pas déclaré
eval ('var v'); v = 2;
}
}
console.log (v);
}
f ();
C'est tout.
Écrit comme une fonction de jugement, le retour de «nodeclare» signifie que la variable n'est pas déclarée, «novalue» signifie que la variable a été déclarée non attribuée et que «Hasvalue» signifie que la variable a été déclaré attribuée:
La copie de code est la suivante:
fonction f (v) {
if (typeof (v) == 'Undefined') {
essayer{
if (v == null)
retour «novalue»;
}
catch (err) {
return 'nodeclare';
}
}
sinon retourne «hasvalue»;
}
var a;
console.log (f (a));
a = 0;
console.log (f (a));
console.log (f (b));
C'est mal à nouveau ... il y aura une erreur lorsque console.log (f (b)); ...