El propósito es que si una variable se declara no asignada, se puede asignar directamente;
Si no se declara, redeclarlo.
Busqué en línea y descubrí que el método común es si (typeof (a) == 'undefinado') {var a = 'ss';},
Sin embargo, este método devolverá verdadero para variables no declaradas o no asignadas. Y si es así:
La copia del código es la siguiente:
var a;
función f () {
if (typeof (a) == 'indefinido')
{var a = 1;}
}
F();
console.log (a);
Undefinado se mostrará porque F () simplemente declara una variable local con el mismo nombre.
Sin embargo, si se trata de una variable que se ha declarado sin asignar: IF (Novaluev == NULL), devolverá verdadero;
Variable no declarada: if (nodeclarev == null), se informará un error.
Entonces puede ser:
La copia del código es la siguiente:
función f () {
if (typeof (v) == 'Undefined') {
intentar{
if (v == null) // indica que v se declara no asignado
v = 1; /si V es una variable global, no cambiará su alcance
}
capt (err) {// indica que V no se declara
var v; v = 2;
}
}
console.log (v);
}
f ();
Esto también está mal, porque JS tiene la característica de 'declarar el avance', es decir, las variables declaradas en la función son visibles en esta función y en la subfunción de esta función, sin importar dónde se declare en la función.
Entonces, debido a la var v;, en cualquier caso, solo lo intenta.
Modifíquelo:
La copia del código es la siguiente:
función f () {
if (typeof (v) == 'Undefined') {
intentar{
if (v == null) // indica que v se declara no asignado
v = 1; /si V es una variable global, no cambiará su alcance
}
capt (err) {// indica que V no se declara
eval ('var v'); v = 2;
}
}
console.log (v);
}
f ();
Eso es todo.
Escrito como una función de juicio, devolver 'nodeclare' significa que la variable no se declara, 'Novalue' significa que la variable se ha declarado sin asignar, y 'ha valorado' significa que la variable ha sido declarada asignada:
La copia del código es la siguiente:
función f (v) {
if (typeof (v) == 'Undefined') {
intentar{
if (v == nulo)
regresar 'Novalue';
}
Catch (err) {
return 'nodeclare';
}
}
de lo contrario regresa 'hasalve';
}
var a;
console.log (f (a));
a = 0;
console.log (f (a));
console.log (f (b));
Está mal de nuevo ... habrá un error cuando console.log (f (b)); ...