Una variable es un nombre que apunta a cierta posicion de memoria donde su valor almacenado es modificado durante la ejecucion de un programa.
Tenemos dos tipos de variables
- Globales
- Locales
En Javascript el ambito es global, La variable declarada fuera de una funcion es una variable global y es pasada por
referencia a scopes descendientes o herederos
//Definida como variable global
i = "globalx";
var main = function(){
function foo() {
var i = "local"; //Tiene alcance de funcion dentro de foo
let s = "juan";{ //Tiene alcance de bloque
console.log(s);
}
console.log(i);
}
foo();
console.log(i) //Pinta el valor de globalx
}
(function main(){});
Hoisting
function miFuncion() {
console.log(x);
var x=10;
}
function miFuncion() {
var x;
console.log(x);
x=10;
}
Se imprime “undefined” porque no tiene valor
(function main(){});
La diferencia es el alcance de las variables. let permite declarar variables limitando su alcance al bloque, declaración, o expresión donde se está usando y var el alcance de una variable es un contexto de ejecucion, tiene alcance de funcion, si no ponemos el var la variable i se declara global
Hoisting
Independientemente de donde esté situada la declaración de una variable, ésta va a ser movida al inicio del ámbito al que pertenece
function miFuncion() {
console.log(x);
var x=10;
}
Es como si hubiésemos
escrito:
function miFuncion() {
var x;
console.log(x);
x=10;
}
Se imprime “undefined” porque no tiene valor
No hay comentarios:
Publicar un comentario