ES6: The Future of JavaScript
Brian Koser
Names
- JavaScript
- ECMAScript 6
- ECMAScript 2016
Crash Course
Arrays
Objects
var birds = ['eagle', 'falcon', 'dove']
var bear = { name: 'Charlie', age: 5 }
console.log( bear.age ) // 5
console.log( bear['age'] ) // 5
Assignment Destructuring
var numberArray = [1, 2, 3]
var a = numberArray[0]
var b = numberArray[1]
var c = numberArray[2]
console.log( a ) // 1
console.log( b ) // 2
console.log( c ) // 3
Assignment Destructuring
var [a, b, c] = [1, 2, 3]
console.log( a ) // 1
console.log( b ) // 2
console.log( c ) // 3
Assignment Destructuring
var bear = { name: 'Charlie', age: 5 }
var name = bear.name
var age = bear.age
console.log( name ) // 'Charlie'
console.log( age ) // 5
Assignment Destructuring
var bear = { name: 'Charlie', age: 5 }
var { name, age } = bear
console.log( name ) // 'Charlie'
console.log( age ) // 5
Assignment Destructuring
var bear = { food: {likes:'berries'} }
var { food: {likes} } = bear
console.log( likes ) // 'berries'
Assignment Destructuring
function getCoordinates () {
return { x: 10, y: 22 }
}
var {x, y} = getCoordinates()
Template Literals
var name = 'Melissa'
var letter =
'Dear ' + name + ',\n' +
'You\'ve won ' + (2 + 2) +
' candy bars!'
console.log( letter )
// Dear Melissa,
// You've won 4 candy bars!
Template Literals
var name = 'Melissa'
var letter = `Dear ${name},
You've won ${2 + 2} candy bars!`
console.log( letter )
// Dear Melissa,
// You've won 4 candy bars!
Default Parameters
function name(first, last = 'Smith') {
return `${first} ${last}`
}
console.log( name('John', 'Jones') )
// 'John Jones'
console.log( name('Bob') )
// 'Bob Smith'
Rest Parameters
function robotName(color, ...nums) {
var total = 0
nums.forEach( function(item) {
total += item
})
return color + total
}
var robot = robotName('Green', 5, 5, 7)
console.log(robot) // 'Green17'
Spread Operator
function storeBear(name, age, weight) {
// store in bear database
}
var bearInfo = ['Basil', 2, 275]
storeBear(
bearInfo[0],
bearInfo[1],
bearInfo[2]
)
Spread Operator
function storeBear(name, age, weight) {
// store in bear database
}
var bearInfo = ['Basil', 2, 275]
storeBear(...bearInfo)
Spread Operator
var letters = ['a', 'b', 'c']
var numbers = [1, 2, 3]
var all = ['?', ...letters, ...numbers]
console.log( all )
// [ '?', 'a', 'b', 'c', 1, 2, 3 ]
Arrow Functions
var doubles =
[1, 2, 3].map(
function (num) { return num * 2 }
)
console.log( doubles ) // [2, 4, 6]
Arrow Functions
var doubles =
[1, 2, 3].map(num => num * 2)
console.log( doubles ) // [2, 4, 6]
Object Literals
var obj = {
__proto__: theProtoObj,
handler,
// shorthand for "handler:handler"
toString() {
return 'b ' + super.toString()
},
[ 'prop_' + getPropName() ]: 5
}
Classes
function Bear () {
this.hungry = true
}
Bear.prototype.eat = function () {
this.hungry = false
}
Bear.foods = function () {
return ['berries', 'honey']
}
Classes
class Bear {
constructor () {
this.hungry = true
}
eat () {
this.hungry = false
}
static foods () {
return ['berries', 'honey']
}
}
Classes
function Panda () {
}
Panda.prototype = new Bear()
var baseEat = Panda.prototype.eat;
Panda.prototype.eat = function() {
baseEat.call(this);
// extra panda eating code
}
Classes
class Panda extends Bear {
eat () {
super.eat()
// extra panda eating code
}
}
Let
{
var bird = 'duck'
let fish = 'trout'
}
console.log( bird )
// 'duck'
console.log( fish )
// ReferenceError: fish is not defined
Const
const c = 'red'
// Errors
const a // must have an initializer
c = 'blue' // c is read-only
Const
const obj = { numbers: [1,2,3] }
obj.numbers = []
console.log(obj.numbers) // []
Maps
var map = new Map()
map.set( 'food', 23 )
map.set( new Date(), 17 )
for (let [key, value] of map) {
console.log( `${key}: ${value}` )
}
// food: 23
// Wed Dec 16 2015 11:37:19 GMT-0600
// (Central Standard Time): 17
Maps
var map = new Map()
map.set( 'food', 23 )
map.set( new Date(), 17 )
map.size // 2
map.has( 'food' ) // true
map.get( 'food' ) // 23
map.delete( 'food' )
map.clear()
Sets
var mySet = new Set()
mySet.add(1)
mySet.add(2)
mySet.add(3)
mySet.add(3)
console.log(...mySet) // 1 2 3
Strings
'javascript'.startsWith('java') // true
'javascript'.endsWith('t') // true
'javascript'.includes('!') // false
'mirror '.repeat(2) // 'mirror mirror '
And The Rest
- Symbols
- Iterators
- Generators
- Promises
- WeakMaps
- WeakSets
- Proxies
- Reflection
- Number
- Math
- Array
- Object
- Module
The Future is Now
- TypeScript
- Babel
- node
- Evergreen browsers
?
Nicolás Bevacqua
Creative Commons Attribution-NonCommercial 2.5 License
ES6: The Future of JavaScript
By Brian Koser
ES6: The Future of JavaScript
Learn about the newest JavaScript features, and how you can use them today.
- 813