Funcionamiento del Scope en JavaScript
Namespace es el término que se refiere al paradigma de programación que proporciona scope o alcance a los identificadores (palabras reservadas de variables, funciones, tipos...), para prevenir colisiones entre ellos. Un ejemplo muy claro es cuando declaramos una variable en el cuerpo principal de ejecución y declaramos otra variable con el mismo nombre dentro de una función.
let name = "Lucas";
console.log(name);
function displayNewName() {
let name = "Ricardo";
console.log(name);
}
displayNewName();
En JavaScript, el Namespace Global representa el bloque global de ejecución. Si
estamos ejecutando el programa dentro de un navegador, el scope global será
window. Por otro lado, en nodeJS el scope global
será el módulo en ejecución.
console.log(window);
console.log(window === this); // Equal in browse
console.log(this);
Cada variable, al declararse en un scope, quedará visible para sus miembros y descendientes. como
hemos comentado en el módulo 3 var
añade la variable al scope global si se encuentra en este entorno, es por ello que podemos
demostrar fácilmente la visibilidad de las declaraciones.
// Scope of variables
var newVariable = "Hello World";
console.log(window.newVariable);
// Avoid collision
function myScope() {
var newName = "Lucas"
return newName
}
console.log(myScope())
console.log(window.newName); //should be undefined
// Creating a new variable
var newName = "Lucas Fernandez";
console.log(window.newName); //should be Lucas Fernandez