function jjj(asi) {
  asi=3;
}

jjj();
console.log(asi);

Aquí estoy pensando que asi es una variable global, pero al ejecutar este código da como resultado que asi no está definido.

Según los libros y el documento oficial, he estudiado que si mencionas el nombre de la variable sin la palabra clave var, entonces se vuelve global, así que creo que la misma regla se aplica a la variable asi también

0
Alex_Angular 28 feb. 2018 a las 08:33

3 respuestas

La mejor respuesta

Aquí estoy pensando que asi es una variable global, pero al ejecutar este código está dando que asi no esté definido

Crearía un global implícito si no lo declarases como un parámetro, por ejemplo:

function jjj() {
//           ^---------- removed `asi` here
  asi = 3;
}
jjj();
console.log(asi);

Tenga en cuenta que los globales implícitos son una idea realmente mala (llamé a mi publicación de blog sobre ellos El Horror de Globales implícitos por una razón) y debe usar modo estricto para hacerles los errores que siempre deberían haber sido:

"use strict";
function jjj() {
  asi = 3; // ReferenceError: asi is not defined
}
jjj();
console.log(asi);
2
T.J. Crowder 20 mar. 2018 a las 07:26

Para el código de función, los parámetros también se agregan como enlaces a ese entorno de función.

Elimine el parámetro de la función para comportarse asi como una variable global.

function jjj(){  asi=3; }
jjj();
console.log(asi);
0
Mamun 28 feb. 2018 a las 05:42

En su caso, el argumento de la función se reasigna con un nuevo valor.

function jjj(asi) {
  asi = 3 // the function argument will have new value
  mno = 4 // this will be a global variable
}
jjj();
console.log(asi);
console.log(mno);
1
brk 28 feb. 2018 a las 05:39