Skip to content

03. Variables y Scopes

Carlos Jaramillo edited this page Oct 7, 2019 · 6 revisions

Variables

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;

Hoisting

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 )

Alcance de una variable (Scope)

Las variables se envían por referencia a scopes descendientes predeterminadamente.

Global Scope

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 Hoisting

Local Scope

Estando 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

Block Scope

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

Clone this wiki locally