var myvar = 'global';
function f() {
console.log(myvar);
if (true) {
var myvar = 'local';
}
console.log(myvar);
}
Slide 4
Slide 4 text
var myvar = 'global';
function f() {
console.log(myvar);
if (true) {
var myvar = 'local';
}
console.log(myvar);
}
> undefined
> local
Slide 5
Slide 5 text
Hoisting
Slide 6
Slide 6 text
function infiltrate() {
// do something
// ...
var bulletCount = 10;
// do something else
// ...
var handler = function() {
// handle difficult things
};
}
Slide 7
Slide 7 text
function infiltrate() {
var bulletCount;
var handler;
// do something
// ...
bulletCount = 10;
// do something else
// ...
handler = function() {
// handle difficult things
};
}
Slide 8
Slide 8 text
function f() {
console.log(bulletCount);
var bulletCount = 42;
console.log(bulletCount);
}
Slide 9
Slide 9 text
function f() {
console.log(bulletCount);
var bulletCount = 42;
console.log(bulletCount);
}
> undefined
> 42
Slide 10
Slide 10 text
'use strict';
function f() {
console.log(bulletCount);
let bulletCount = 42;
console.log(bulletCount);
}
> ReferenceError: can't access
lexical declaration `bulletCount’
before initialization
Slide 11
Slide 11 text
Function Scope
Slide 12
Slide 12 text
function getAnswer() {
if (true) {
var theAnswer = 42;
}
console.log(theAnswer);
}
Slide 13
Slide 13 text
function getAnswer() {
if (true) {
var theAnswer = 42;
}
console.log(theAnswer);
}
> 42
Slide 14
Slide 14 text
'use strict';
function getAnswer() {
if (true) {
let theAnswer = 42;
}
console.log(theAnswer);
}
> ReferenceError: theAnswer is
not defined
Slide 15
Slide 15 text
‘use strict’;
let myvar = 'global';
function f() {
console.log(myvar);
if (true) {
let myvar = 'local';
}
console.log(myvar);
}
Slide 16
Slide 16 text
‘use strict’;
let myvar = 'global';
function f() {
console.log(myvar);
if (true) {
let myvar = 'local';
}
console.log(myvar);
}
> global
> global
Slide 17
Slide 17 text
‘use strict’;
let myvar = 'global';
function f() {
console.log(myvar);
if (true) {
let myvar = ‘local';
console.log(myvar);
}
}
Slide 18
Slide 18 text
‘use strict’;
let myvar = 'global';
function f() {
console.log(myvar);
if (true) {
let myvar = ‘local';
console.log(myvar);
}
}
> global
> local
var theNumbers = [4, 8, 15, 16, 23, 42];
var total = 0;
for (var i in theNumbers) {
total += i;
}
Slide 44
Slide 44 text
var theNumbers = [4, 8, 15, 16, 23, 42];
var total = 0;
for (var i in theNumbers) {
total += i;
}
> “0012345”
Slide 45
Slide 45 text
Array.prototype.sumOfSquares = function() {
// Blazing fast sum of squares code.
};
var theNumbers = [4, 8, 15];
for (var i in theNumbers) {
console.log(i);
}
Slide 46
Slide 46 text
Array.prototype.sumOfSquares = function() {
// Blazing fast sum of squares code.
};
var theNumbers = [4, 8, 15];
for (var i in theNumbers) {
console.log(i);
}
> 0
> 1
> 2
> sumOfSquares
Slide 47
Slide 47 text
var theNumbers = [4, 8, 15, 16, 23, 42];
var total = 0;
for (var i of theNumbers) {
total += i;
}
Slide 48
Slide 48 text
var theNumbers = [4, 8, 15, 16, 23, 42];
var total = 0;
for (var i of theNumbers) {
total += i;
}
> 108
Slide 49
Slide 49 text
Arrow Functions
Slide 50
Slide 50 text
var nums = [4, 8, 15, 16, 23, 42];
// ECMAScript 5
var squares = nums.map(function(n) {
return n * n;
});
// ECMAScript 6
let squares = nums.map((n) => n * n);
Slide 51
Slide 51 text
const squareNumber = n => n * n;
const squareNumber = (n) => n * n;
const addNumbers = a, b => a + b; // Error!
const addNumbers = (a, b) => a + b;
const addNumbers = (a, b) => {
return a + b;
};
Slide 52
Slide 52 text
function Person() {
this.age = 0;
setInterval(function growUp() {
this.age++;
}, 1000);
}
var p = new Person();
Slide 53
Slide 53 text
function Person() {
var self = this;
self.age = 0;
setInterval(function growUp() {
self.age++;
}, 1000);
}
var p = new Person();
Slide 54
Slide 54 text
function Person() {
this.age = 0;
setInterval(() => {
this.age++;
}, 1000);
}
var p = new Person();
Slide 55
Slide 55 text
Computed Object
Properties
Slide 56
Slide 56 text
var p1 = new Person('Sterling', 'Archer');
var p2 = new Person('Lana', 'Kane');
var ages = {};
ages[p1.firstName + ' ' + p1.lastName] = 37;
ages[p1.firstName + ' ' + p1.lastName] = 33;
{
'Sterling Archer': 37,
'Lana Kane': 33
}
Slide 57
Slide 57 text
let p1 = new Person('Sterling', 'Archer');
let p2 = new Person('Lana', 'Kane');
let ages = {
[p1.firstName + ' ' + p1.lastName]: 37,
[p2.firstName + ' ' + p2.lastName]: 33
};
{
'Sterling Archer': 37,
'Lana Kane': 33
}
Slide 58
Slide 58 text
Property Value Shorthand
in Object Literals
Slide 59
Slide 59 text
var agentName = 'Sterling Archer';
var obj = {
agentName: agentName
};
{
agentName: 'Sterling Archer'
}