Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Front End London: Intro to ES6
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Jack Franklin
October 04, 2014
Technology
11k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Front End London: Intro to ES6
Jack Franklin
October 04, 2014
More Decks by Jack Franklin
See All by Jack Franklin
Advanced React Meetup: Testing JavaScript
jackfranklin
1
270
Components on the Web: Frontend NE
jackfranklin
1
850
ReactiveConf: Lessons Migrating Complex Software
jackfranklin
0
520
Front Trends: Migrating complex software
jackfranklin
1
850
Migrating from Angular to React: Manc React
jackfranklin
1
210
Half Stack Fest: Webpack
jackfranklin
4
600
FullStackFest: Elm for JS Developers
jackfranklin
1
270
Codelicious: Intro to ES2015
jackfranklin
0
450
PolyConf: Elm for JS Developers
jackfranklin
0
300
Other Decks in Technology
See All in Technology
気づかぬうちにセキュリティ負債を生むAPIキー運用
sgwrmctk
0
180
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
280
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.5k
Kiro Ambassador を目指す話
k_adachi_01
0
110
Android の公式 Skill / Android skills
yanzm
0
160
入門!AWS Blocks
ysuzuki
1
160
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
150
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
1.3k
AI時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
yoshimi0227
0
250
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
230
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
2
770
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
140
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
530
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Mobile First: as difficult as doing things right
swwweet
225
10k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
We Are The Robots
honzajavorek
0
250
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
370
Transcript
None
@Jack_Franklin
None
None
Arrow Functions
var nums = [1,2,3]; ! nums.map(function(x) { return x *
2; }); ! nums.map((x) => x * 2);
var nums = [1,2,3]; ! nums.map(function(x) { return x *
2; }); ! nums.map((x) => x * 2);
var jack = { name: ‘jack’, friends: [‘james’, ‘steve’], printFriends:
function() { this.friends.forEach(function(f) { log(this.name, ‘knows’, f); }) } }; ! // undefined knows james // undefined knows steve
var jack = { name: ‘jack’, friends: [‘james’, ‘steve’], printFriends:
function() { this.friends.forEach((f) => { log(this.name, ‘knows’, f); }) } }; ! // jack knows james // jack knows steve
var someAjax = { name: ‘jack’, get: function() { $.getJSON(url,
function(d) { log(this.name, d); }) } };
var someAjax = { name: ‘jack’, get: function() { $.getJSON(url,(d)
=> { log(this.name, d); }) } };
Classes
class Person { constructor(name, age) { this.name = name, this.age
= age } about() { log(this.name, this.age); } };
class Person { constructor(name, age) { this.name = name, this.age
= age } about() { log(this.name, this.age); } };
class Person { constructor(name, age) { this.name = name, this.age
= age } about() { log(this.name, this.age); } };
var jack = new Person(‘jack’, 22); ! jack.about(); //=> jack
22
class Son extends Person { constructor(name, age) { super(name, age);
this.son = true; } }; ! var jack = new Son(‘jack’, 22); jack.about(); //=> jack 22 jack.son; //=> true
class Son extends Person { constructor(name, age) { super(name, age);
this.son = true; } }; ! var jack = new Son(‘jack’, 22); jack.about(); //=> jack 22 jack.son; //=> true
class Son extends Person { constructor(name, age) { super(name, age);
this.son = true; } }; ! var jack = new Son(‘jack’, 22); jack.about(); //=> jack 22 jack.son; //=> true
class Son extends Person { constructor(name, age) { super(name, age);
this.son = true; } }; ! var jack = new Son(‘jack’, 22); jack.about(); //=> jack 22 jack.son; //=> true
class Son extends Person { constructor(name, age) { super(name, age);
this.son = true; } }; ! var jack = new Son(‘jack’, 22); jack.about(); //=> jack 22 jack.son; //=> true
Object Literals
var jack = { name: ‘jack’, age: 22, about() {
log(this.name, this.age); } };
var jack = { ['hello_' + (() => 'world')()]: 42
}; ! console.log(jack.hello_world); // 42
Template Strings
`In JavaScript '\n' is a line-feed.` !
var f =`Multiline strings with back ticks in ES6.` !
console.log(f); ! Multiline strings with back ticks in ES6
var name = ‘jack’; var age = 22; `${name} is
${age} years old`
Destructuring
var [a, b] = [1, 2]; ! a == 1
! b == 2
var [a, ,b] = [1, 2, 3]; ! a ==
1 ! b == 3
var {a, b} = {a: 2, b: 3} ! a
== 2 ! b == 3
var {a, b} = {b: 3} ! a == undefined
! b == 3
function getPerson() { return { name: ‘jack’, age: 22 }
}; ! var {name, age} = getPerson();
Function Arguments
function getInfo(print: false) { if(print) { log(this.name, this.age); } else
{ return `${this.name} ${this.age}` } } ! getInfo();
function length(...nums) { log(nums.length); }; ! length(1,2,3); // 3
function total(x, y, z) { log(x + y + z);
}; ! total(1, 2, 3) ! total.apply(null, [1, 2, 3]); ! total(...[1, 2, 3]);
function total(x, y, z) { log(x + y + z);
}; ! total(1, 2, 3) ! total.apply(null, [1, 2, 3]); ! total(...[1, 2, 3]);
function foo({name, age}) { console.log(name, age); } ! foo({ name:
'jack', age: 22}) ! //=> jack, 22
Scope
Global Scope (window) Function Scope
foo = 2; ! var fad = 2; ! !
function() { bar = 3; ! var baz = 4; } ! foo: 2, fad: 2, bar: 3 baz: 4
function() { if(x) { var foo = 3; } var
baz = 4; } foo: 3, baz: 4
Global Scope (window) Function Scope Block Scope
foo = 2; ! function() { var baz = 4;
if(x) { let y = 2; } } ! foo: 2 ! baz: 4 ! y: 2
foo = 2; ! function() { var baz = 4;
if(x) { var z = 3; let y = 2; } } ! foo: 2 ! baz: 4, z: 3 ! y: 2
Modules
var foo = 2; var bar = 3; ! export
{foo, bar}; import {foo} from ‘app’ ! console.log(foo); // 2 app.js foo.js
export var foo = 2; import {foo} from ‘app’ !
console.log(foo); // 2 app.js foo.js
export default function() { return 2; }; import foo from
‘app’ ! console.log(foo()); // 2 app.js foo.js
export var foo = 2; export var bar = 3;
module stuff from ‘app’; ! stuff.foo // 2 stuff.bar // 3 app.js foo.js
Generators
Person.findOne({id: 5}, (per) => { // person has been got
Location.findOne(…, (loc) => { // location has been got }); });
var per = yield Person.findOne(…); ! var loc = yield
Location.findOne(…); ! // async but reads as sync! !
ES6 Today
http://kangax.github.io/compat-table/es6/
chrome://flags
Traceur https://github.com/google/traceur-compiler
node --harmony
ES6 module transpiler https://github.com/esnext/es6-module-transpiler
New projects should use ES6 Modules
Maps, Sets, Proxies, Promises, Symbols, Module Loaders, new Object APIs
https://github.com/ jackfranklin/epic-fel-es6- today-links
@Jack_Franklin