SlideShare a Scribd company logo
ES6
Cory Forsyth
@bantic
Cory Forsyth
@bantic
JavaScript History
JavaScript is not a
Language
• JavaScript is an implementation of a language
• ActionScript was another implementation
• The name of the language is: ECMAScript
• JavaScript : ECMAScript :: Rubinius/JRuby : Ruby
JavaScript History
• Invented at Netscape by Brendan Eich
• Mocha -> LiveScript -> JavaScript
• 1996 -> Standardization taken by Ecma
• Renamed -> ECMAScript (trademark reasons)
ECMAScript
• What is Ecma?
• “Ecma International is an industry association …
dedicated to the standardization of Information and
Communication Technology”
• Its website slogan is: “Standards@Internet Speed”
Explaining ES6: JavaScript History and What is to Come
Ecma Org Chart
Ecma Org Chart
• TC = Technical Committee
• TC39 = Technical Committee tasked with
ECMAScript ®
• TC39 Official Scope: “Standardization of the
general purpose, cross platform, vendor-neutral
programming language ECMAScript.”
• Ecma = European Computer Manufacturers
Association
ECMAScript
• 1997: ECMA-262: Language Standard
• On github (now): tc39/ecma262
• 1998 ES2
• 1999 ES3
ECMAScript
• 2000: ES4
ECMAScript
• 2000: ES4
ECMAScript
• 2000: ES4
• 2005: ES4
• Mozilla and Macromedia
• Big changes, major leap from ES5
ECMAScript
• 2000: ES4
• 2005: ES4
• Mozilla and Macromedia
• Big changes, major leap from ES5
• Divisive, Yahoo & Microsoft opposed
ECMAScript
• 2000: ES4
• 2005: ES4
• Mozilla and Macromedia
• Big changes, major leap from ES5
• Divisive, Yahoo & Microsoft opposed
ES5
• 2009 in Oslo
• “Modern” JavaScript
• Originally v3.1 (incremental change)
• “Harmony”
ES6
• Will be released in 2015
• After this, versions will be released yearly:
• ES2015
• ES2016
• …
ES2015: What’s New?
ES2015
• Syntax Changes
• New features
• Fixes
• Superset of ES5
if (true) {
var x = 'yes';
}
console.log(x); // 'yes'
if (true) {
let x = 'yes';
}
console.log(x); // ReferenceError
var is hoisted
let is block scope
`let` there be light scope
hoisting
function() {
console.log(x); // undefined
var x = 'foo';
console.log(x); // ‘foo’
}
hoisting
function() {
var x;
console.log(x); // undefined
x = 'foo';
console.log(x); // ‘foo’
}
`let` : temporal dead zone
function() {
console.log(x); // ReferenceError
// TDZ
let x = 'foo';
console.log(x); // ‘foo’
}
`let` there be sanity
let funcs = [];
for (var i=0; i < 5; i++) {
funcs.push(function() { alert(i); });
}
funcs[0]();
`let` there be sanity
let funcs = [];
for (let i=0; i < 5; i++) {
funcs.push(function() { alert(i); });
}
funcs[0]();
a new i for each turn of the loop
`const`
const x = 'foo';
x = 'bar'; // error
const x = {
foo: 'bar'
};
x.foo = 'baz'; // ok (!)
can modify properties of a const
cannot reassign const
use Object.freeze, Object.seal to
prevent changes to an object
Arrow functions =>
var x = function() {} let x = () => {}
• Has own scope
• Has `arguments`
• No implicit return
• “lexical” scope
• No `arguments`
• implicit return*
• *sometimes
Arrow functions =>
this.x = 'yes';
let y = () => {
"use strict";
console.log(this.x);
};
y(); // 'yes'
this.x = 'yes';
var y = function(){
"use strict";
console.log(this.x);
};
y(); // TypeError…
`this` is undefined `this` from outer scope
No need for var that = this, `bind` with
arrow functions
Arrow functions =>
1 arg: no parens, implicit return
let square = x => x * x;
let squares = [1,2,3].map(square);
console.log(squares) // [1,4,9]
Arrow functions =>
1 arg: no parens, implicit return
let square = x => x * x;
let squares = [1,2,3].map(square);
console.log(squares) // [1,4,9]
let add = (a,b) => a + b;
add(2,3); // 5
2 args: needs parens, implicit return
Arrow functions =>
1 arg: no parens, implicit return
let square = x => x * x;
let squares = [1,2,3].map(square);
console.log(squares) // [1,4,9]
let add = (a,b) => a + b;
add(2,3); // 5
2 args: needs parens, implicit return
let add = (a,b) => { return a + b };
add(2,3); // 5
function body: use {}, explicit return
Arrow functions =>
`arguments` from outer scope
let x = function() {
return () => {
alert(arguments[0]);
};
}
let y = x(5);
y();
uses x’s arguments
template strings
string interpolation!
let foo = 'bar';
console.log(`foo = ${foo}`);
// "foo = bar"
let multiline = `first line
and second line
`);
multiline strings
destructuring assignment
let obj = {
foo: 'bar',
boo: 'baz'
};
let {foo, boo} = obj;
console.log(foo); // 'bar'
console.log(boo); // 'baz'
let colors = ['red', 'green'];
let [color1, color2] = colors;
console.log(color2); // green
for objects
for arrays
destructuring assignment
mixed
let obj = {
foo: 'bar',
colors: ['red', 'green']
}
let {foo, colors: [color1, color2]} = obj;
console.log(foo); // bar
console.log(color2); // green
shorthand object assignment
same property and
variable name
let foo = 'bar';
let obj = {
foo,
boo() {
console.log('baz');
}
}
console.log(obj.foo); // bar
obj.boo(); // baz
function without
“: function”
default function params
function doSomething(timeout, options) {
timeout = timeout || 2000;
options = options || {repeat: true};
var repeat = options.repeat;
setTimeout(function(){
console.log(repeat);
}, timeout);
}
doSomething(0);
// logs 'true' after 2000ms
ES5
default function params
function doSomething(timeout=2000, {repeat}={repeat:true}) {
setTimeout(function(){
console.log(repeat);
}, timeout);
}
doSomething(0);
// logs "true" right away
ES6
function rest params
function sum(first, ...others) {
let sum = first;
for (let i of others) {
sum = sum + i;
}
console.log(sum);
}
sum(1, 2, 3, 4); // 10
others is an array of remaining args
spread operator
function sum2(first, ...others) {
console.log(sum + Math.max(...others));
}
sum2(1, 2, 4, 3); // 5 (=== 1 + 4)
Math.max(…others)
is equivalent to Math.max(2,4,3)
classes
class Person {
constructor() {
this.name = 'Cory';
}
sayHi() {
console.log(this.name);
}
}
let p = new Person();
p.sayHi(); // Cory
extend and super also work as expected
modules
named export
// file a.js
export let x = ‘yes';
export default {
foo: 'bar'
};
// file b.js
import { x } from 'a';
console.log(x); // yes
import stuff from 'a';
console.log(stuff.foo); // bar
named import
default export
default import
Other ES2015 features
• Object.is() — fixes == and ===
• Unicode support
• Promises for async support
• Symbols — a new primitive
• iterators and generators
• Map, Set
• Object.assign() — aka `extend`, `merge` or `mixin`
• String methods — `includes`, `repeat`, `startsWith`
• function.name
• … many more
What’s the status today?
Explaining ES6: JavaScript History and What is to Come
How do I use it?
Explaining ES6: JavaScript History and What is to Come
Babel support
• Many ES2015 (aka ES6) features and syntax
• Some ES2016 (aka ES7) features and syntax
• Some things transpiled directly to ES5
• Some supported via Polyfill
• Some not supported yet (Proxies, in particular)
The JavaScript Future
• Transpiling
• Not just a transitionary thing
• Support matrices
• ES is a living standard
• Venn Diagram of ES2015 / ES2016 / Browser Support
• As target browsers support features your code uses, turn off transpilation of
those features
Cory Forsyth
@bantic
Thank you!
• Babel and Babel REPL
• Using ES6 Today
• ES6 Glossary
• ES6+ Compatibility Table
• ES6 Overview Slides
• ECMA-262 Living Standard on github
• Ecma International
• ES6 Learning
• Aligning Ember With Web Standards
• http://bit.ly/bantic-es6 — these slides
Links

More Related Content

PDF
ES6 - Next Generation Javascript
PDF
ES2015 (ES6) Overview
PDF
An Intro To ES6
PDF
ECMAScript 6
PDF
EcmaScript 6 - The future is here
PPTX
ES6 in Real Life
PPTX
Introduction to Ecmascript - ES6
PDF
JavaScript - new features in ECMAScript 6
ES6 - Next Generation Javascript
ES2015 (ES6) Overview
An Intro To ES6
ECMAScript 6
EcmaScript 6 - The future is here
ES6 in Real Life
Introduction to Ecmascript - ES6
JavaScript - new features in ECMAScript 6

What's hot (20)

ODP
EcmaScript 6
ODP
ES6 PPT FOR 2016
PDF
Introduction into ES6 JavaScript.
PDF
ES6 in Production [JSConfUY2015]
PDF
JavaScript ES6
PPTX
Modern JS with ES6
PPTX
ES6: Features + Rails
PDF
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
PDF
Javascript ES6 generators
PPTX
Type Driven Development with TypeScript
PDF
Planet-HTML5-Game-Engine Javascript Performance Enhancement
PDF
FalsyValues. Dmitry Soshnikov - ECMAScript 6
PPTX
EcmaScript unchained
PDF
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
PDF
Metaprogramming and Reflection in Common Lisp
PPTX
Category theory, Monads, and Duality in the world of (BIG) Data
PDF
How to Clone Flappy Bird in Swift
PPTX
Academy PRO: ES2015
PDF
Functional Algebra: Monoids Applied
PDF
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
EcmaScript 6
ES6 PPT FOR 2016
Introduction into ES6 JavaScript.
ES6 in Production [JSConfUY2015]
JavaScript ES6
Modern JS with ES6
ES6: Features + Rails
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
Javascript ES6 generators
Type Driven Development with TypeScript
Planet-HTML5-Game-Engine Javascript Performance Enhancement
FalsyValues. Dmitry Soshnikov - ECMAScript 6
EcmaScript unchained
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
Metaprogramming and Reflection in Common Lisp
Category theory, Monads, and Duality in the world of (BIG) Data
How to Clone Flappy Bird in Swift
Academy PRO: ES2015
Functional Algebra: Monoids Applied
Scalaz By Example (An IO Taster) -- PDXScala Meetup Jan 2014
Ad

Viewers also liked (20)

PDF
ES2015 / ES6: Basics of modern Javascript
PDF
The New JavaScript: ES6
PDF
ES6: The Awesome Parts
PDF
Lecture 2: ES6 / ES2015 Slide
PDF
The JavaScript You Wished You Knew
PDF
JavaScript 快速複習 2017Q1
PDF
Workshop de Web Components
PPTX
Material design
PDF
WebApps com Web Components
PDF
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
PDF
Um salve para evolução! construindo uma nova web com polymer
PDF
Chrome Dev Summit Highlights (NYC GDG Dec 2013)
PDF
The Beautiful Simplicity of ES2015
PDF
Tech talk polymer
PDF
Polymer Starter Kit
PDF
Polymer Elements: Tudo que você precisa saber para criar a web
PDF
Apresentação Google I/O Extended Vitória
PDF
Web components
PPTX
Material Design - do smartphone ao desktop
PDF
Polymer and Firebase: Componentizing the Web in Realtime
ES2015 / ES6: Basics of modern Javascript
The New JavaScript: ES6
ES6: The Awesome Parts
Lecture 2: ES6 / ES2015 Slide
The JavaScript You Wished You Knew
JavaScript 快速複習 2017Q1
Workshop de Web Components
Material design
WebApps com Web Components
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Um salve para evolução! construindo uma nova web com polymer
Chrome Dev Summit Highlights (NYC GDG Dec 2013)
The Beautiful Simplicity of ES2015
Tech talk polymer
Polymer Starter Kit
Polymer Elements: Tudo que você precisa saber para criar a web
Apresentação Google I/O Extended Vitória
Web components
Material Design - do smartphone ao desktop
Polymer and Firebase: Componentizing the Web in Realtime
Ad

Similar to Explaining ES6: JavaScript History and What is to Come (20)

PDF
Workshop 10: ECMAScript 6
PDF
JavaScript - Agora nervoso
PDF
Javascript
PDF
ESCMAScript 6: Get Ready For The Future. Now
PDF
ECMAScript 6 new features
PPTX
Awesomeness of JavaScript…almost
PPTX
ECMAScript 2015
PPTX
Es6 hackathon
PDF
What's New in ES6 for Web Devs
PDF
JavaScript in 2016
PPTX
JavaScript in 2016 (Codemotion Rome)
PDF
ECMAScript 6
PDF
Fitc whats new in es6 for web devs
PDF
AkJS Meetup - ES6++
PPTX
ES6 Overview
PDF
Node Boot Camp
PDF
ECMAScript2015
PDF
Ignite es6
PDF
Having Fun Programming!
Workshop 10: ECMAScript 6
JavaScript - Agora nervoso
Javascript
ESCMAScript 6: Get Ready For The Future. Now
ECMAScript 6 new features
Awesomeness of JavaScript…almost
ECMAScript 2015
Es6 hackathon
What's New in ES6 for Web Devs
JavaScript in 2016
JavaScript in 2016 (Codemotion Rome)
ECMAScript 6
Fitc whats new in es6 for web devs
AkJS Meetup - ES6++
ES6 Overview
Node Boot Camp
ECMAScript2015
Ignite es6
Having Fun Programming!

More from Cory Forsyth (12)

PDF
EmberFest Mobiledoc Demo Lightning Talk
PDF
Making ember-wormhole work with Fastboot
PDF
Chrome Extensions at Manhattan JS
PDF
OAuth 2.0 Misconceptions
PDF
Ember Authentication and Authorization with Torii
PDF
HAL APIs and Ember Data
PDF
Ember testing internals with ember cli
PDF
Stackup New Languages Talk: Ember is for Everybody
PDF
Microsoft tech talk march 28 2014
PDF
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
PDF
Torii: Ember.js Authentication Library
KEY
APIs: Internet for Robots
EmberFest Mobiledoc Demo Lightning Talk
Making ember-wormhole work with Fastboot
Chrome Extensions at Manhattan JS
OAuth 2.0 Misconceptions
Ember Authentication and Authorization with Torii
HAL APIs and Ember Data
Ember testing internals with ember cli
Stackup New Languages Talk: Ember is for Everybody
Microsoft tech talk march 28 2014
HTTP by Hand: Exploring HTTP/1.0, 1.1 and 2.0
Torii: Ember.js Authentication Library
APIs: Internet for Robots

Recently uploaded (20)

DOCX
Unit-3 cyber security network security of internet system
PPTX
Funds Management Learning Material for Beg
PDF
Sims 4 Historia para lo sims 4 para jugar
PPTX
introduction about ICD -10 & ICD-11 ppt.pptx
PPTX
522797556-Unit-2-Temperature-measurement-1-1.pptx
PPTX
Digital Literacy And Online Safety on internet
PPTX
INTERNET------BASICS-------UPDATED PPT PRESENTATION
PPTX
PptxGenJS_Demo_Chart_20250317130215833.pptx
PDF
“Google Algorithm Updates in 2025 Guide”
PDF
APNIC Update, presented at PHNOG 2025 by Shane Hermoso
PPTX
cyber security Workshop awareness ppt.pptx
PDF
Cloud-Scale Log Monitoring _ Datadog.pdf
PPTX
Introuction about ICD -10 and ICD-11 PPT.pptx
PPTX
presentation_pfe-universite-molay-seltan.pptx
PDF
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
PDF
LABUAN4D EXCLUSIVE SERVER STAR GAMING ASIA NO.1
PDF
RPKI Status Update, presented by Makito Lay at IDNOG 10
PDF
Unit-1 introduction to cyber security discuss about how to secure a system
PDF
Slides PDF The World Game (s) Eco Economic Epochs.pdf
PDF
The Internet -By the Numbers, Sri Lanka Edition
Unit-3 cyber security network security of internet system
Funds Management Learning Material for Beg
Sims 4 Historia para lo sims 4 para jugar
introduction about ICD -10 & ICD-11 ppt.pptx
522797556-Unit-2-Temperature-measurement-1-1.pptx
Digital Literacy And Online Safety on internet
INTERNET------BASICS-------UPDATED PPT PRESENTATION
PptxGenJS_Demo_Chart_20250317130215833.pptx
“Google Algorithm Updates in 2025 Guide”
APNIC Update, presented at PHNOG 2025 by Shane Hermoso
cyber security Workshop awareness ppt.pptx
Cloud-Scale Log Monitoring _ Datadog.pdf
Introuction about ICD -10 and ICD-11 PPT.pptx
presentation_pfe-universite-molay-seltan.pptx
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
LABUAN4D EXCLUSIVE SERVER STAR GAMING ASIA NO.1
RPKI Status Update, presented by Makito Lay at IDNOG 10
Unit-1 introduction to cyber security discuss about how to secure a system
Slides PDF The World Game (s) Eco Economic Epochs.pdf
The Internet -By the Numbers, Sri Lanka Edition

Explaining ES6: JavaScript History and What is to Come

  • 4. JavaScript is not a Language • JavaScript is an implementation of a language • ActionScript was another implementation • The name of the language is: ECMAScript • JavaScript : ECMAScript :: Rubinius/JRuby : Ruby
  • 5. JavaScript History • Invented at Netscape by Brendan Eich • Mocha -> LiveScript -> JavaScript • 1996 -> Standardization taken by Ecma • Renamed -> ECMAScript (trademark reasons)
  • 6. ECMAScript • What is Ecma? • “Ecma International is an industry association … dedicated to the standardization of Information and Communication Technology” • Its website slogan is: “Standards@Internet Speed”
  • 9. Ecma Org Chart • TC = Technical Committee • TC39 = Technical Committee tasked with ECMAScript ® • TC39 Official Scope: “Standardization of the general purpose, cross platform, vendor-neutral programming language ECMAScript.” • Ecma = European Computer Manufacturers Association
  • 10. ECMAScript • 1997: ECMA-262: Language Standard • On github (now): tc39/ecma262 • 1998 ES2 • 1999 ES3
  • 13. ECMAScript • 2000: ES4 • 2005: ES4 • Mozilla and Macromedia • Big changes, major leap from ES5
  • 14. ECMAScript • 2000: ES4 • 2005: ES4 • Mozilla and Macromedia • Big changes, major leap from ES5 • Divisive, Yahoo & Microsoft opposed
  • 15. ECMAScript • 2000: ES4 • 2005: ES4 • Mozilla and Macromedia • Big changes, major leap from ES5 • Divisive, Yahoo & Microsoft opposed
  • 16. ES5 • 2009 in Oslo • “Modern” JavaScript • Originally v3.1 (incremental change) • “Harmony”
  • 17. ES6 • Will be released in 2015 • After this, versions will be released yearly: • ES2015 • ES2016 • …
  • 19. ES2015 • Syntax Changes • New features • Fixes • Superset of ES5
  • 20. if (true) { var x = 'yes'; } console.log(x); // 'yes' if (true) { let x = 'yes'; } console.log(x); // ReferenceError var is hoisted let is block scope `let` there be light scope
  • 21. hoisting function() { console.log(x); // undefined var x = 'foo'; console.log(x); // ‘foo’ }
  • 22. hoisting function() { var x; console.log(x); // undefined x = 'foo'; console.log(x); // ‘foo’ }
  • 23. `let` : temporal dead zone function() { console.log(x); // ReferenceError // TDZ let x = 'foo'; console.log(x); // ‘foo’ }
  • 24. `let` there be sanity let funcs = []; for (var i=0; i < 5; i++) { funcs.push(function() { alert(i); }); } funcs[0]();
  • 25. `let` there be sanity let funcs = []; for (let i=0; i < 5; i++) { funcs.push(function() { alert(i); }); } funcs[0](); a new i for each turn of the loop
  • 26. `const` const x = 'foo'; x = 'bar'; // error const x = { foo: 'bar' }; x.foo = 'baz'; // ok (!) can modify properties of a const cannot reassign const use Object.freeze, Object.seal to prevent changes to an object
  • 27. Arrow functions => var x = function() {} let x = () => {} • Has own scope • Has `arguments` • No implicit return • “lexical” scope • No `arguments` • implicit return* • *sometimes
  • 28. Arrow functions => this.x = 'yes'; let y = () => { "use strict"; console.log(this.x); }; y(); // 'yes' this.x = 'yes'; var y = function(){ "use strict"; console.log(this.x); }; y(); // TypeError… `this` is undefined `this` from outer scope No need for var that = this, `bind` with arrow functions
  • 29. Arrow functions => 1 arg: no parens, implicit return let square = x => x * x; let squares = [1,2,3].map(square); console.log(squares) // [1,4,9]
  • 30. Arrow functions => 1 arg: no parens, implicit return let square = x => x * x; let squares = [1,2,3].map(square); console.log(squares) // [1,4,9] let add = (a,b) => a + b; add(2,3); // 5 2 args: needs parens, implicit return
  • 31. Arrow functions => 1 arg: no parens, implicit return let square = x => x * x; let squares = [1,2,3].map(square); console.log(squares) // [1,4,9] let add = (a,b) => a + b; add(2,3); // 5 2 args: needs parens, implicit return let add = (a,b) => { return a + b }; add(2,3); // 5 function body: use {}, explicit return
  • 32. Arrow functions => `arguments` from outer scope let x = function() { return () => { alert(arguments[0]); }; } let y = x(5); y(); uses x’s arguments
  • 33. template strings string interpolation! let foo = 'bar'; console.log(`foo = ${foo}`); // "foo = bar" let multiline = `first line and second line `); multiline strings
  • 34. destructuring assignment let obj = { foo: 'bar', boo: 'baz' }; let {foo, boo} = obj; console.log(foo); // 'bar' console.log(boo); // 'baz' let colors = ['red', 'green']; let [color1, color2] = colors; console.log(color2); // green for objects for arrays
  • 35. destructuring assignment mixed let obj = { foo: 'bar', colors: ['red', 'green'] } let {foo, colors: [color1, color2]} = obj; console.log(foo); // bar console.log(color2); // green
  • 36. shorthand object assignment same property and variable name let foo = 'bar'; let obj = { foo, boo() { console.log('baz'); } } console.log(obj.foo); // bar obj.boo(); // baz function without “: function”
  • 37. default function params function doSomething(timeout, options) { timeout = timeout || 2000; options = options || {repeat: true}; var repeat = options.repeat; setTimeout(function(){ console.log(repeat); }, timeout); } doSomething(0); // logs 'true' after 2000ms ES5
  • 38. default function params function doSomething(timeout=2000, {repeat}={repeat:true}) { setTimeout(function(){ console.log(repeat); }, timeout); } doSomething(0); // logs "true" right away ES6
  • 39. function rest params function sum(first, ...others) { let sum = first; for (let i of others) { sum = sum + i; } console.log(sum); } sum(1, 2, 3, 4); // 10 others is an array of remaining args
  • 40. spread operator function sum2(first, ...others) { console.log(sum + Math.max(...others)); } sum2(1, 2, 4, 3); // 5 (=== 1 + 4) Math.max(…others) is equivalent to Math.max(2,4,3)
  • 41. classes class Person { constructor() { this.name = 'Cory'; } sayHi() { console.log(this.name); } } let p = new Person(); p.sayHi(); // Cory extend and super also work as expected
  • 42. modules named export // file a.js export let x = ‘yes'; export default { foo: 'bar' }; // file b.js import { x } from 'a'; console.log(x); // yes import stuff from 'a'; console.log(stuff.foo); // bar named import default export default import
  • 43. Other ES2015 features • Object.is() — fixes == and === • Unicode support • Promises for async support • Symbols — a new primitive • iterators and generators • Map, Set • Object.assign() — aka `extend`, `merge` or `mixin` • String methods — `includes`, `repeat`, `startsWith` • function.name • … many more
  • 46. How do I use it?
  • 48. Babel support • Many ES2015 (aka ES6) features and syntax • Some ES2016 (aka ES7) features and syntax • Some things transpiled directly to ES5 • Some supported via Polyfill • Some not supported yet (Proxies, in particular)
  • 49. The JavaScript Future • Transpiling • Not just a transitionary thing • Support matrices • ES is a living standard • Venn Diagram of ES2015 / ES2016 / Browser Support • As target browsers support features your code uses, turn off transpilation of those features
  • 50. Cory Forsyth @bantic Thank you! • Babel and Babel REPL • Using ES6 Today • ES6 Glossary • ES6+ Compatibility Table • ES6 Overview Slides • ECMA-262 Living Standard on github • Ecma International • ES6 Learning • Aligning Ember With Web Standards • http://bit.ly/bantic-es6 — these slides Links