SlideShare a Scribd company logo
let
let$vs$var
let:"block&scope
var:"func%on'scope
Scope&1
var language = 'javascript';
if (true) {
var team = 'AppCenter';
let company = 'concur';
}
console.log(language);
console.log(team);
console.log(company);
Scope&1&(Answer)
var language = 'javascript';
if (true) {
var team = 'AppCenter';
let company = 'concur';
}
console.log(language); // 'javascript'
console.log(team); // 'AppCenter'
console.log(company); // ReferenceError: company is not defined
Loop$1
for (var i=1; i<=5; i++) {
let j = i;
setTimeout(function() {
console.log(i, j);
},500);
}
Loop$1$(Answer)
for (var i=1; i<=5; i++) {
let j = i;
setTimeout(function() {
console.log(i, j);
},500);
}
// 6, 1
// 6, 2
// 6, 3
// 6, 4
// 6, 5
Loop$w/Let
for (let i=1; i<=5; i++) {
setTimeout(function() {
console.log(i);
},500);
}
Loop$w/Let$(Answer)
for (let i=1; i<=5; i++) {
setTimeout(function() {
console.log(i);
},500);
}
//"1
//"2
//"3
//"4
//"5
Mul$ple'Declara$on
let version = 'ES 5';
var library = 'Angluar'
if (true) {
let version = 'ES 6';
var library = 'React';
console.log(version);
}
console.log(version);
console.log(library);
Mul$ple'Declara$on'(Answer)
let version = 'ES 5';
var library = 'Angluar'
if (true) {
let version = 'ES 6';
var library = 'React';
console.log(version); // 'ES 6'
}
console.log(version); // 'ES 5'
console.log(library); // 'React'
To#the#Top!
if (true) {
console.log(bar);
console.log(foo);
var bar;
let foo;
}
To#the#Top!#(Answer)
if (true) {
console.log(bar); // undefined
console.log(foo); // ReferenceError: foo is not defined
var bar;
let foo;
}
let!is!not!hoisted.!The!area!between!the!beginning!of!the!block!
and!the!variable!declara6on!is!called!the!"temporal*dead*zone"
Support
• Chrome(41+
• node.js(12+((with(66harmony)
• node --harmony --use-strict
• io.js
• Babel((Transpiler)
• IE11
h"p://kangax.github.io/compat3table/es6/
Why?
• Principle)of)least)privilege
• avoid'collisions
• fewer'hacks'(no'IIFEs)
• no'hois7ng
Going&Forward
• Grab&a&transpiler&and&start&using&let&today!
• h5ps://babeljs.io/
or
• Pay%a&en)on%to%the%scope%your%variables%have%and%any%hacks%
you're%using%to%create%a%smaller%scope
ES6 Let

More Related Content

ES6 Let