A continuación se muestra el fragmento que no entendió por qué se produce una salida indefinida. Explíquelo. Gracias de antemano.
var name = "test"; function message() { console.log(name); var name = "test 2"; } message()Esto se debe a que declaró una variable local con el mismo nombre y enmascara la variable global.
Entonces, cuando escribes el name , te refieres a la variable local.
Eso es cierto incluso si lo escribe antes de la declaración de esa variable local, las variables en JavaScript tienen un alcance de función.
Sin embargo, puede utilizar el hecho de que las variables globales son propiedades del objeto global ( window ):
var name = "test"; function message1() { console.log(name); var name = "test 2"; } function message2() { console.log(name); } function message3() { console.log(name); name = "test 2"; } function message4() { console.log(name); var name = window.name || ""; } function message5() { var name = window.name || ""; console.log(name); } message1(); // undefined message2(); // test message3(); // test message4(); // undefined message5(); // test 2