-
Notifications
You must be signed in to change notification settings - Fork 1
03. Variables y Scopes
Las variables son contenedores en los que puedes almacenar valores. Javascript:
- Es case sensitivity.
- Es débilmente tipado (weakly typed).
var nombreVariable;
let nombreVariableBloque;
// const crea una referencia inmutable (no reasingable), no variables inmutables
const NOMBRE_CONSTANTE_O_MAGIC_NUMBER;Básicamente es usar una variable, antes de declararla. Hoisting es el comportamiento por defecto de JavaScript de mover todas las declaraciones a la parte superior del ámbito actual (en la parte superior de la secuencia de comandos actual o la función actual) y posteriormente hace la asignación.
Todas las declaraciones (var, let, const, function, function*, class) son "hoisted"
Diferencias: es la inicialización. Las segundas, solo se evalúan cuando son evaluadas, mientras están en una temporal dead zone
-
var / function / function* ( undefined o generator )
-
let / const / class ( temporal dead zone )
Las variables se envían por referencia a scopes descendientes predeterminadamente.
Estando fuera de una función/clase (var o let)
a = 'xd'; // Global Scope (Default Scope)
var b; // Global Scope
b = 'xd';
var c = 'xd'; // Global Scope - Permite Hoisting
let c = 'xd'; // Global Scope - No permite HoistingEstando dentro de una función/clase (var o let)
function foo() {
var d = 'lol'; // Local Scope
var e = 'lol'; // Local Scope
}- Se puede tener una variable global y una local con el mismo nombre y diferente valor
let necesita estar dentro de un bloque (if, while, for, loops, { }, etc) (let o const)
if (true) {
let i = 1; // Block Scope
}
console.log(i); // ReferenceError: i is not defined
const f = 'constante'; // No permite hoisting