Sitemap
Tommaso Rossi

Tommaso Rossi

Bitforce.app CTO, Front end Lover

Scoping

2 min readJun 24, 2016

--

Questo è un articolo che fa parte di una guida su ES6

Block-Scoped Variables

In ES6 possiamo dichiarare le variabili oltre che con CONST anche con LET.
Vediamo di capire che differenze ci sono tra var e let.
Se consideriamo il seguente snippet di codice possiamo vedere come

  • var dichiara una variabile disponibile a livello di scope ( ricordiamoci che in javascript uno scope è generato da una funzione )
  • let rende disponibile la variabile a livello di blocco ( ricordiamoci che in javascript un blocco è generato da due parentesi graffe {}, da non confondere con un oggetto! )
var varUno = “varUno”;
let letUno = “letUno”;
function f1() {
if (true) {
var varDue = “varDue”;
let letDue = “letDue”;
}
console.log(varUno);
console.log(varDue);

console.log(letUno);
console.log(letDue);
}

Get Tommaso Rossi’s stories in your inbox

Join Medium for free to get updates from this writer.

f1();

L’ output del jsbin qua sotto mostra un errore che è relativo al tentativo di stampar e console il valore della variabile letDue, ma questa è disponibile soltanto all’interno del blocco in cui è dichiarata e quindi al di fuori dell’ if (true) non esiste.

Press enter or click to view image in full size

Block-scoped Functions

Cosa del tutto analoga avviene con le funzioni, adesso possiamo fare a meno delle closure!

//ES6
{
function f1 () { return 1 }
f1() === 1
{
function f1 () { return 2 }
f1() === 2
}
f1() === 1
}
//In ES5 usando una closure
(function () {
var f2 = function () { return 1; }
foo() === 1;
(function () {
var f2 = function () { return 2; }
f2() === 2;
})();
f2() === 1;
})();
Press enter or click to view image in full size

--

--