SlideShare a Scribd company logo
1 of 109
Download to read offline
ECMAScript 6
othree coscup
https://github.com/voodootikigod/logo.js
Self Intro
@othree https://blog.othree.net
twitter web standards murmur
flickr photo guy for confs
github html5.vim, tern-coffee…
ntust phd candidate
History
Syntax
1996
1997
1998
1999
History
JavaScript 1.0
JScript 1.0JavaScript 1.1
JScript 2.0
JScript 3.0
JavaScript 1.2
JavaScript 1.3
Netscape Microsoft
Standardization
⚈ Standard script language running on browser
⚈ Host by ECMA
ECMA歐洲電腦製造商協會
ECMAScript
⚈ Standard of JavaScript
⚈ ECMA-262, also called ECMAScript
⚈ 1.0, 2.0 published around 1997-1998
⚈ Current Edition: 5.1
http://zh.wikipedia.org/wiki/ECMAScript
History
⚈ Browser War
⚈ ES3 most supported
⚈ ES4 abandoned
⚈ ES5 current
⚈ ES6 talking today
1999
2009
2014
ES3
⚈ Most supported
⚈ IE6, 7, 8
ES4
⚈ Flash, ActionScript
⚈ Abandoned
ES5
⚈ From 3.1
⚈ Strict mode
⚈ More solid spec
What is ES Now
⚈ ECMAScript is spec
⚈ JavaScript is implementation by Mozilla
⚈ IE’s: JScript
⚈ Host by ECMA International
JavaScript
1.5 ECMAScript 3
1.6 array extras + array and string generics + E4X
1.7 Pythonic generators + iterators + let
1.8 generator expressions + expression closures
1.81 native JSON support
1.85 ECMAScript 5 compliance
1.86 more ES6 futures
http://en.wikipedia.org/wiki/JavaScript#Version_history
New in JavaScript
https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript
ES6
⚈ Next world wide web scripting language
⚈ Lots of new feature
⚈ Also called ECMAScript Harmony
Q&A
⚈ May I use today
Q&A
⚈ May I use today
⚈ Yes
⚈ Google is using (AngularJS 2.0)
ES5 You May Not
Know
http://youtu.be/UTEqr0IlFKY
ES6 Features
Major Features
Module Class
Iterator Syntax
Syntax
History
Iterator
let
⚈ Block scope local variable
http://mdn.io/let
let
{!
let foo = 100;!
foo; // 100!
}!
!
foo; //undefined
let
for (let i = 0; i < len; i++) {!
// blah!
}
const
const foo = 100;!
foo; // 100!
!
foo = 101;!
!
foo; // 100
Template Literals
var name = 'world';!
!
var greeting = `hello ${name}`;!
!
greeting; //hello world;
`
⚈ Grave accent
⚈ Back tick
⚈ Shell: execute command in between
Arrow Function
var square = (x) => {!
return x * x;!
};!
!
var square2 = x => x * x;
http://mdn.io/arrow
Arrow Function
// Empty function body!
var foo = (x) => {}!
!
// Single parameter!
var foo = x => {}!
!
// No parameter!
var foo = () => {}!
!
// More parameters!
var foo = (x, y) => {}
Arrow Function
// Single expression!
var foo = (x) => x*x!
!
// Multiple expression!
var foo = (x) => {!
let y = x * x;!
// need return!
return y * x;!
}
Arrow Function
⚈ Auto return result of single expression
⚈ Lexical this , like CoffeeScript
Default Parameter
function foo(x = 5, y = 5) { }
Rest Parameters
function foo(x = 5, ...rest) {!
rest;!
}!
!
foo(1, 2, 3, 4, 5, 6);!
// [2,3,4,5,6]
Spread Operator
function f(x, y, z) { }!
var args = [0, 1, 2];!
!
f.apply(null, args);!
!
f(...args);
Spread Operator
var arg2 = [...args, 3, 4];!
// [0,1,2,3,4]!
!
var arg3 = arg.push(...arg2);!
// [0,1,2,0,1,2,3,4]
Destructing Assign
var a, b;!
!
[a, b] = [1, 2];!
//a:1, b:2
Destructing Assign
[a, b] = [b, a];!
//swap!
!
[a, ,[b, c]] = [1, 0, [2, 3]];!
//a:1, b:2, c:3!
!
{lan: a, lon: b} = getPOS();!
//object destructing
Destructing and Spread
[a, ...b] = [1, 2, 3, 4, 5];!
//a:1, b:[2,3,4,5]
Class
class Counter {!
constructor() {!
this.count = 0;!
}!
tick() {!
this.count++;!
}!
get count() {!
return this.count;!
}!
}
Class Extends
class People extends Counter {!
constructor(people) {!
this.people = people;!
for (let p in people) {!
this.tick();!
}!
}!
}!
!
var p = new People([1,2,3,4,5]);!
p.count; //5
Class
⚈ No multiple inheritance
⚈ Define property only in constructor
Map
⚈ Like object, {…}
⚈ Key, value pair data structure
⚈ Use non-string data as key
⚈ Native object’s key will use toString
Map
m = new Map();!
m.set(true, 'T');!
m.set(false, 'F');!
!
m.size; //2!
!
m.get(true); //"T"!
m.get(false); //"F"!
!
m.get(1); // undefined
Map Methods
clear has
delete keys
entries set
forEach values
get
Set
⚈ Like array, […]
⚈ Can’t get value at specific index
⚈ Use for…of
Set
s = new Set();!
s.add('A');!
s.add('B');!
s.add('C');!
!
for (v of s) {!
console.log(v);!
}!
// A, B ,C
Set Methods
add forEach
clear has
delete values
entries
for…of
for...of
⚈ New loop method
⚈ Like CoffeeScript’s for...in
⚈ Used to loop iterable object items
Iterable
Array String
Map Set
Create Custom
Iterable Object
Iterator
Syntax
Use ES6 Today
Iterator
⚈ A new interface in ES spec
⚈ User can implement custom iterator
⚈ An object with next method
http://mdn.io/iterator
iterator.next
⚈ Return an object with value and done!
⚈ value is next item’s value

⚈ done shows is this iterator finished
⚈ Can’t reuse
Iterator
var it = idMaker();!
!
console.log(it.next().value);!
console.log(it.next().value);!
console.log(it.next().value);
Generator
⚈ Like idMaker
⚈ Generator is a function, generate iterator
⚈ Different invoke will create different iterator,
iterate the same list.
Generator
function idMaker() {!
var index = 0;!
return {!
next: function () {!
return {!
value: index++,!
done: false!
};!
}!
};!
}
yield
⚈ yield is generator helper
⚈ Let you easy to create generator
yield
function* idMaker(){!
var index = 0;!
while(true)!
yield index++;!
}
http://mdn.io/generator
yield
function* idMaker(){!
var index = 0;!
while(index < 6)!
yield index++;!
}
http://mdn.io/generator
yield
⚈ * is the indicator to tell runtime
⚈ yield is return point
yield
function* idMaker(){!
var index = 0;!
while(index < 6)!
yield index++;!
}
http://mdn.io/generator
This is a generator
First Call
function* idMaker(){!
var index = 0;!
while(index < 6)!
yield index++;!
}
http://mdn.io/generator
return
starts here
Second Call
function* idMaker(){!
var index = 0;!
while(index < 6)!
yield index++;!
}
http://mdn.io/generator
return
starts here
yield
⚈ Function end will return done: true
Iterable
⚈ Have generator function in the object
⚈ Under @@iterator property
Iterable
ID = {};!
!
ID['@@iterator'] = idMaker;!
//or use Symbol!
ID[Symbol.iterator] = idMaker;!
!
for (id of ID) {!
id;!
//0,1,2,3,4,5!
}
http://people.mozilla.org/~jorendorff/es6-draft.html#table-1
Iterable Features
for…of
Comprehension
var ns = [1, 2, 3, 4];!
!
var dbls = [for (i of ns) i*2];!
!
dbls; // [2, 4, 6, 8]
簡約式
CoffeeScript Syntax
arr = [1, 2, 3, 4];!
!
res = (x for x in arr);
2 Level Comprehension
var ms = [1, 2, 3, 4];!
var ns = [2, 3, 4, 5];!
!
[for (i of ms) for (j of ns) i*j];!
// [2, 6, 12, 20]
Conditional Comprehension
var ns = [1, 2, 3, 4];!
!
[for (i of ns) if (i % 2) i];!
//[1, 3]
Comprehension for Iterator
var ns = [1, 2, 3, 4];!
!
(for (i of ns) if (i % 2) i);!
//iterator with values [1, 3]
more…
⚈ Object Literal Extensions
⚈ Proxy
⚈ Modules, Import, Export
⚈ Promise
⚈ Symbol
Use ES6 Today
Iterator
ECMAScript 7,8…
http://kangax.github.io/compat-table/es6/
Web
ES6 for Web
⚈ Precompile ES6 to ES5
⚈ traceur-compiler
⚈ from Google
⚈ AngularJS 2.0
https://github.com/google/traceur-compiler
in Develop
⚈ Need watch and compile when file changes
⚈ Use gulp to watch
⚈ gulp-traceur or es6ify to compile
⚈ https://github.com/othree/es6-skeleton
es6-skeleton
⚈ A project seed
⚈ Based on gulp
⚈ browserify, es6ify
⚈ livereload
ECMAScript 7,8…
Use ES6 Today
Conclusion
ES.future
ES7 ES8
guards macros
contracts
parallel arrays
(SIMD)
event loop concurrency
http://www.2ality.com/2011/09/es6-8.html
http://youtu.be/3WgVHE5Augc
Type
⚈ First see in ActionScript
ActionScript 3.0 Cookbook
Type
⚈ TypeScript also has type imply syntax
Type in ES.future
⚈ Called guards
let x :: Number = 37;!
!
function f(p :: Int) :: cType {}!
!
let o = {!
a :: Number : 42,!
b: “b"!
};
let x :: Number = 37;!
!
function f(p :: Int) :: cType {}!
!
let o = {!
a :: Number : 42,!
b: “b"!
};
Benefit
⚈ Write more solid code
⚈ Better Performance
⚈ JS engine detects variable type change now
⚈ JSLint: confusion: true
http://www.html5rocks.com/en/tutorials/speed/v8/
Where is new Spec
Traceur-Compiler Doc
https://github.com/google/traceur-compiler/wiki/LanguageFeatures
ES Wiki
http://wiki.ecmascript.org/doku.php
Spec Draft
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts
ES Wiki
⚈ strawman: pre proposal
⚈ harmony: TC39 approved proposal
TC39 Meeting Notes
https://github.com/rwaldron/tc39-notes
Conclusion
ECMAScript 7,8…
Conclusion
⚈ ES6 is coming
⚈ You can use it today
⚈ Get ready for ES7, 8, 9, 10, 11
Q&A

More Related Content

What's hot

Beautiful code instead of callback hell using ES6 Generators, Koa, Bluebird (...
Beautiful code instead of callback hell using ES6 Generators, Koa, Bluebird (...Beautiful code instead of callback hell using ES6 Generators, Koa, Bluebird (...
Beautiful code instead of callback hell using ES6 Generators, Koa, Bluebird (...andreaslubbe
 
Callbacks and control flow in Node js
Callbacks and control flow in Node jsCallbacks and control flow in Node js
Callbacks and control flow in Node jsThomas Roch
 
ES2015 (ES6) Overview
ES2015 (ES6) OverviewES2015 (ES6) Overview
ES2015 (ES6) Overviewhesher
 
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011Nick Sieger
 
JavaScript Engines and Event Loop
JavaScript Engines and Event Loop JavaScript Engines and Event Loop
JavaScript Engines and Event Loop Tapan B.K.
 
ECMAScript 6 and the Node Driver
ECMAScript 6 and the Node DriverECMAScript 6 and the Node Driver
ECMAScript 6 and the Node DriverMongoDB
 
Clojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVMClojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVMsunng87
 
JRuby @ Boulder Ruby
JRuby @ Boulder RubyJRuby @ Boulder Ruby
JRuby @ Boulder RubyNick Sieger
 
Introduction to clojure
Introduction to clojureIntroduction to clojure
Introduction to clojureAbbas Raza
 
Introduction to asynchronous DB access using Node.js and MongoDB
Introduction to asynchronous DB access using Node.js and MongoDBIntroduction to asynchronous DB access using Node.js and MongoDB
Introduction to asynchronous DB access using Node.js and MongoDBAdrien Joly
 
Alfresco the clojure way
Alfresco the clojure wayAlfresco the clojure way
Alfresco the clojure wayCarlo Sciolla
 
Any event intro
Any event introAny event intro
Any event introqiang
 
Node.js System: The Approach
Node.js System: The ApproachNode.js System: The Approach
Node.js System: The ApproachHaci Murat Yaman
 
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev ConfTom Croucher
 
Asynchronous Programming FTW! 2 (with AnyEvent)
Asynchronous Programming FTW! 2 (with AnyEvent)Asynchronous Programming FTW! 2 (with AnyEvent)
Asynchronous Programming FTW! 2 (with AnyEvent)xSawyer
 
Functional Reactive Programming in Clojurescript
Functional Reactive Programming in ClojurescriptFunctional Reactive Programming in Clojurescript
Functional Reactive Programming in ClojurescriptLeonardo Borges
 

What's hot (20)

Beautiful code instead of callback hell using ES6 Generators, Koa, Bluebird (...
Beautiful code instead of callback hell using ES6 Generators, Koa, Bluebird (...Beautiful code instead of callback hell using ES6 Generators, Koa, Bluebird (...
Beautiful code instead of callback hell using ES6 Generators, Koa, Bluebird (...
 
Callbacks and control flow in Node js
Callbacks and control flow in Node jsCallbacks and control flow in Node js
Callbacks and control flow in Node js
 
ES2015 (ES6) Overview
ES2015 (ES6) OverviewES2015 (ES6) Overview
ES2015 (ES6) Overview
 
C to perl binding
C to perl bindingC to perl binding
C to perl binding
 
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
JRuby + Rails = Awesome Java Web Framework at Jfokus 2011
 
iSoligorsk #3 2013
iSoligorsk #3 2013iSoligorsk #3 2013
iSoligorsk #3 2013
 
JavaScript Engines and Event Loop
JavaScript Engines and Event Loop JavaScript Engines and Event Loop
JavaScript Engines and Event Loop
 
Node.js - Best practices
Node.js  - Best practicesNode.js  - Best practices
Node.js - Best practices
 
ECMAScript 6 and the Node Driver
ECMAScript 6 and the Node DriverECMAScript 6 and the Node Driver
ECMAScript 6 and the Node Driver
 
JS everywhere 2011
JS everywhere 2011JS everywhere 2011
JS everywhere 2011
 
Clojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVMClojure: Practical functional approach on JVM
Clojure: Practical functional approach on JVM
 
JRuby @ Boulder Ruby
JRuby @ Boulder RubyJRuby @ Boulder Ruby
JRuby @ Boulder Ruby
 
Introduction to clojure
Introduction to clojureIntroduction to clojure
Introduction to clojure
 
Introduction to asynchronous DB access using Node.js and MongoDB
Introduction to asynchronous DB access using Node.js and MongoDBIntroduction to asynchronous DB access using Node.js and MongoDB
Introduction to asynchronous DB access using Node.js and MongoDB
 
Alfresco the clojure way
Alfresco the clojure wayAlfresco the clojure way
Alfresco the clojure way
 
Any event intro
Any event introAny event intro
Any event intro
 
Node.js System: The Approach
Node.js System: The ApproachNode.js System: The Approach
Node.js System: The Approach
 
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
 
Asynchronous Programming FTW! 2 (with AnyEvent)
Asynchronous Programming FTW! 2 (with AnyEvent)Asynchronous Programming FTW! 2 (with AnyEvent)
Asynchronous Programming FTW! 2 (with AnyEvent)
 
Functional Reactive Programming in Clojurescript
Functional Reactive Programming in ClojurescriptFunctional Reactive Programming in Clojurescript
Functional Reactive Programming in Clojurescript
 

Viewers also liked

Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Rack Lin
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹國昭 張
 
那些年,我們一起搞的金流
那些年,我們一起搞的金流那些年,我們一起搞的金流
那些年,我們一起搞的金流Chris Wu
 
Elasticsearch 簡介
Elasticsearch 簡介Elasticsearch 簡介
Elasticsearch 簡介Pei-Hsun Kao
 
Chrome 佛心做了 Devtool 就是要用啊? 從 Timeline 學調效動畫效能
Chrome 佛心做了 Devtool 就是要用啊? 從 Timeline 學調效動畫效能Chrome 佛心做了 Devtool 就是要用啊? 從 Timeline 學調效動畫效能
Chrome 佛心做了 Devtool 就是要用啊? 從 Timeline 學調效動畫效能Yvonne Yu
 
網站自動化測試
網站自動化測試網站自動化測試
網站自動化測試Bruce Chen
 
提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)
提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)
提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)Chen Cheng-Wei
 
Seo 最重要的檢查項目
Seo 最重要的檢查項目Seo 最重要的檢查項目
Seo 最重要的檢查項目Gene Hong
 

Viewers also liked (9)

Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹
 
那些年,我們一起搞的金流
那些年,我們一起搞的金流那些年,我們一起搞的金流
那些年,我們一起搞的金流
 
Elasticsearch 簡介
Elasticsearch 簡介Elasticsearch 簡介
Elasticsearch 簡介
 
Chrome 佛心做了 Devtool 就是要用啊? 從 Timeline 學調效動畫效能
Chrome 佛心做了 Devtool 就是要用啊? 從 Timeline 學調效動畫效能Chrome 佛心做了 Devtool 就是要用啊? 從 Timeline 學調效動畫效能
Chrome 佛心做了 Devtool 就是要用啊? 從 Timeline 學調效動畫效能
 
網站自動化測試
網站自動化測試網站自動化測試
網站自動化測試
 
提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)
提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)
提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)
 
Elasticsearch 簡介
Elasticsearch 簡介Elasticsearch 簡介
Elasticsearch 簡介
 
Seo 最重要的檢查項目
Seo 最重要的檢查項目Seo 最重要的檢查項目
Seo 最重要的檢查項目
 

Similar to ECMAScript 6

ECMAScript2015
ECMAScript2015ECMAScript2015
ECMAScript2015qmmr
 
EcmaScript 6 - The future is here
EcmaScript 6 - The future is hereEcmaScript 6 - The future is here
EcmaScript 6 - The future is hereSebastiano Armeli
 
Traceur - Javascript.next - Now! RheinmainJS April 14th
Traceur - Javascript.next - Now! RheinmainJS April 14thTraceur - Javascript.next - Now! RheinmainJS April 14th
Traceur - Javascript.next - Now! RheinmainJS April 14thCarsten Sandtner
 
React Native Evening
React Native EveningReact Native Evening
React Native EveningTroy Miles
 
Tamarin And Ecmascript 4
Tamarin And Ecmascript 4Tamarin And Ecmascript 4
Tamarin And Ecmascript 4elliando dias
 
JavaScript in 2015
JavaScript in 2015JavaScript in 2015
JavaScript in 2015Igor Laborie
 
Functional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event SystemsFunctional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event SystemsLeonardo Borges
 
Tamarin and ECMAScript 4
Tamarin and ECMAScript 4Tamarin and ECMAScript 4
Tamarin and ECMAScript 4jeresig
 
Don't Be Afraid of Abstract Syntax Trees
Don't Be Afraid of Abstract Syntax TreesDon't Be Afraid of Abstract Syntax Trees
Don't Be Afraid of Abstract Syntax TreesJamund Ferguson
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoMatt Stine
 
Ember background basics
Ember background basicsEmber background basics
Ember background basicsPhilipp Fehre
 
Beginning Scala with Skinny Framework #jjug_ccc
Beginning Scala with Skinny Framework #jjug_cccBeginning Scala with Skinny Framework #jjug_ccc
Beginning Scala with Skinny Framework #jjug_cccKazuhiro Sera
 

Similar to ECMAScript 6 (20)

ECMAScript2015
ECMAScript2015ECMAScript2015
ECMAScript2015
 
ES6: The future is now
ES6: The future is nowES6: The future is now
ES6: The future is now
 
EcmaScript 6 - The future is here
EcmaScript 6 - The future is hereEcmaScript 6 - The future is here
EcmaScript 6 - The future is here
 
Es.next
Es.nextEs.next
Es.next
 
Traceur - Javascript.next - Now! RheinmainJS April 14th
Traceur - Javascript.next - Now! RheinmainJS April 14thTraceur - Javascript.next - Now! RheinmainJS April 14th
Traceur - Javascript.next - Now! RheinmainJS April 14th
 
Es6 hackathon
Es6 hackathonEs6 hackathon
Es6 hackathon
 
Modern JS with ES6
Modern JS with ES6Modern JS with ES6
Modern JS with ES6
 
React Native Evening
React Native EveningReact Native Evening
React Native Evening
 
ES6: The Awesome Parts
ES6: The Awesome PartsES6: The Awesome Parts
ES6: The Awesome Parts
 
Tamarin And Ecmascript 4
Tamarin And Ecmascript 4Tamarin And Ecmascript 4
Tamarin And Ecmascript 4
 
JavaScript ES6
JavaScript ES6JavaScript ES6
JavaScript ES6
 
JavaScript in 2015
JavaScript in 2015JavaScript in 2015
JavaScript in 2015
 
Functional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event SystemsFunctional Reactive Programming / Compositional Event Systems
Functional Reactive Programming / Compositional Event Systems
 
Tamarin and ECMAScript 4
Tamarin and ECMAScript 4Tamarin and ECMAScript 4
Tamarin and ECMAScript 4
 
Don't Be Afraid of Abstract Syntax Trees
Don't Be Afraid of Abstract Syntax TreesDon't Be Afraid of Abstract Syntax Trees
Don't Be Afraid of Abstract Syntax Trees
 
Javascript status 2016
Javascript status 2016Javascript status 2016
Javascript status 2016
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to Go
 
Ember background basics
Ember background basicsEmber background basics
Ember background basics
 
AkJS Meetup - ES6++
AkJS Meetup -  ES6++AkJS Meetup -  ES6++
AkJS Meetup - ES6++
 
Beginning Scala with Skinny Framework #jjug_ccc
Beginning Scala with Skinny Framework #jjug_cccBeginning Scala with Skinny Framework #jjug_ccc
Beginning Scala with Skinny Framework #jjug_ccc
 

More from 偉格 高

Mobile web application
Mobile web applicationMobile web application
Mobile web application偉格 高
 
Web Developer Tools for ICOS 2013
Web Developer Tools for ICOS 2013Web Developer Tools for ICOS 2013
Web Developer Tools for ICOS 2013偉格 高
 
Functional programming using underscorejs
Functional programming using underscorejsFunctional programming using underscorejs
Functional programming using underscorejs偉格 高
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS偉格 高
 
Javascript essential-pattern
Javascript essential-patternJavascript essential-pattern
Javascript essential-pattern偉格 高
 
Vim Plugin Deployment
Vim Plugin DeploymentVim Plugin Deployment
Vim Plugin Deployment偉格 高
 
WAI-ARIA is More Than Accessibility
WAI-ARIA is More Than AccessibilityWAI-ARIA is More Than Accessibility
WAI-ARIA is More Than Accessibility偉格 高
 
TOSSUG HTML5 讀書會 新標籤與表單
TOSSUG HTML5 讀書會 新標籤與表單TOSSUG HTML5 讀書會 新標籤與表單
TOSSUG HTML5 讀書會 新標籤與表單偉格 高
 
Html5 New Features
Html5 New FeaturesHtml5 New Features
Html5 New Features偉格 高
 

More from 偉格 高 (13)

Web Component
Web ComponentWeb Component
Web Component
 
Mobile web application
Mobile web applicationMobile web application
Mobile web application
 
this
thisthis
this
 
Web Developer Tools for ICOS 2013
Web Developer Tools for ICOS 2013Web Developer Tools for ICOS 2013
Web Developer Tools for ICOS 2013
 
Functional programming using underscorejs
Functional programming using underscorejsFunctional programming using underscorejs
Functional programming using underscorejs
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS
 
Javascript essential-pattern
Javascript essential-patternJavascript essential-pattern
Javascript essential-pattern
 
Vim Plugin Deployment
Vim Plugin DeploymentVim Plugin Deployment
Vim Plugin Deployment
 
WAI-ARIA is More Than Accessibility
WAI-ARIA is More Than AccessibilityWAI-ARIA is More Than Accessibility
WAI-ARIA is More Than Accessibility
 
WAI-ARIA
WAI-ARIAWAI-ARIA
WAI-ARIA
 
TOSSUG HTML5 讀書會 新標籤與表單
TOSSUG HTML5 讀書會 新標籤與表單TOSSUG HTML5 讀書會 新標籤與表單
TOSSUG HTML5 讀書會 新標籤與表單
 
Html5 New Features
Html5 New FeaturesHtml5 New Features
Html5 New Features
 
Base2
Base2Base2
Base2
 

ECMAScript 6