O objetivo é que, se uma variável for declarada não atribuída, ela pode ser atribuída diretamente;
Se não for declarado, redeclare.
Eu pesquisei on -line e descobri que o método comum é se (typeof (a) == 'indefinido') {var a = 'ss';},
No entanto, esse método retornará verdadeiro para variáveis não declaradas ou não atribuídas. E se sim:
A cópia do código é a seguinte:
var a;
função f () {
if (typeof (a) == 'indefinido')
{var a = 1;}
}
f ();
console.log (a);
Indefinido será exibido porque F () apenas declara uma variável local com o mesmo nome.
No entanto, se for uma variável que foi declarada não atribuída: se (Novaluev == null), ele retornará verdadeiro;
Variável não declarada: if (nodeclarev == null), um erro será relatado.
Então pode ser:
A cópia do código é a seguinte:
função f () {
if (typeof (v) == 'indefinido') {
tentar{
se (v == null) // indicar que V é declarado não atribuído
v = 1;
}
Catch (err) {// indica que V não é declarado
var v; v = 2;
}
}
console.log (v);
}
f ();
Isso também está errado, porque o JS tem a característica de 'declarar adiantamento', ou seja, as variáveis declaradas na função são visíveis nessa função e na subcunção dessa função, não importa onde seja declarada na função.
Portanto, devido ao var V v;, em qualquer caso, você só tenta.
Modifique:
A cópia do código é a seguinte:
função f () {
if (typeof (v) == 'indefinido') {
tentar{
se (v == null) // indicar que V é declarado não atribuído
v = 1;
}
Catch (err) {// indica que V não é declarado
Eval ('var v'); v = 2;
}
}
console.log (v);
}
f ();
Isso é tudo.
Escrito como uma função de julgamento, retornar 'NodeClare' significa que a variável não é declarada, 'novALUE' significa que a variável foi declarada não atribuída e 'Hasvalue' significa que a variável foi declarada designada:
A cópia do código é a seguinte:
função f (v) {
if (typeof (v) == 'indefinido') {
tentar{
if (v == null)
retornar 'novalue';
}
Catch (err) {
retornar 'nodeclare';
}
}
mais retornar 'hasvalue';
}
var a;
console.log (f (a));
a = 0;
console.log (f (a));
console.log (f (b));
Está errado novamente ... haverá um erro quando console.log (f (b)); ...