ECMAScript
adding new functionalities
What is ECMA?
What is ECMAScript?
ECMAScript
- Standard developed by ECMA International
ECMAScript
- Standard developed by ECMA International
- JavaScript, JScript and ActionScript
ECMAScript
- Standard developed by ECMA International
- JavaScript, JScript and ActionScript
- First edition: ECMAScript 1 (1997); latest: ECMAScript 2019
ECMAScript
- Standard developed by ECMA International
- JavaScript, JScript and ActionScript
- First edition: ECMAScript 1 (1997), latest ECMAScript 2019
- ECMAScript 2019 (also known ES2019 or ES10)
History
History
- Netscape and Java
History
- Netscape and Java
- Brendan Eich
History
- Netscape and Java
- Brendan Eich
- Mocha -> Livescript -> JavaScript
History
- Netscape and Java
- Brendan Eich
- Mocha -> Livescript -> JavaScript
- Microsoft and JScript
History
- Netscape and Java
- Brendan Eich
- Mocha -> Livescript -> JavaScript
- Microsoft and JScript
- Netscape and ECMA
History
- Netscape and Java
- Brendan Eich
- Mocha -> Livescript -> JavaScript
- Microsoft and JScript
- Netscape and ECMA
- ECMAScript
ECMAScript Versions
- ECMAScript 1 (first standard; 1997)
ECMAScript Versions
- ECMAScript 1 (first standard; 1997)
- ECMAScript 2 (editoral changes; 1998)
ECMAScript Versions
- ECMAScript 1 (first standard; 1997)
- ECMAScript 2 (editoral changes; 1998)
- ECMAScript 3 (regular expressions, try catch; 1999)
ECMAScript Versions
- ECMAScript 1 (first standard; 1997)
- ECMAScript 2 (editoral changes; 1998)
- ECMAScript 3 (regular expressions, try catch; 1999)
- ECMAScript 4 (classes, modules, generators, destructuring; ----)
ECMAScript Versions
- ECMAScript 1 (first standard; 1997)
- ECMAScript 2 (editoral changes; 1998)
- ECMAScript 3 (regular expressions, try catch; 1999)
- ECMAScript 4 (classes, modules, generators, destructuring; ----)
- ECMAScript 3.1 -> 5 (strict mode, JSON native support; 2009)
ECMAScript Versions
- ECMAScript 1 (first standard; 1997)
- ECMAScript 2 (editoral changes; 1998)
- ECMAScript 3 (regular expressions, try catch; 1999)
- ECMAScript 4 (classes, modules, generators, destructuring; ----)
- ECMAScript 3.1 -> 5 (strict mode, JSON native support; 2009)
- ECMAScript 2015 [ES6 or ES2015] (classes, modules, arrow functions, const and let, promises; 2015)
ECMAScript Versions
- ECMAScript 1 (first standard; 1997)
- ECMAScript 2 (editoral changes; 1998)
- ECMAScript 3 (regular expressions, try catch; 1999)
- ECMAScript 4 (classes, modules, generators, destructuring; ----)
- ECMAScript 3.1 -> 5 (strict mode, JSON native support; 2009)
- ECMAScript 2015 [ES6 or ES2015] (classes, modules, arrow functions, const and let, promises; 2015)
- ECMAScript 2016 (Array.prototype.includes, exponentiation operator **; 2016)
ECMAScript Versions
- ECMAScript 1 (first standard; 1997)
- ECMAScript 2 (editoral changes; 1998)
- ECMAScript 3 (regular expressions, try catch; 1999)
- ECMAScript 4 (classes, modules, generators, destructuring; ----)
- ECMAScript 3.1 -> 5 (strict mode, JSON native support; 2009)
- ECMAScript 2015 [ES6 or ES2015] (classes, modules, arrow functions, const and let, promises; 2015)
- ECMAScript 2016 (Array.prototype.includes, exponentiation operator **; 2016)
- ECMAScript 2017 (async/await; Object.values / entries; 2017)
ECMAScript Versions
- ECMAScript 1 (first standard; 1997)
- ECMAScript 2 (editoral changes; 1998)
- ECMAScript 3 (regular expressions, try catch; 1999)
- ECMAScript 4 (classes, modules, generators, destructuring; ----)
- ECMAScript 3.1 -> 5 (strict mode, JSON native support; 2009)
- ECMAScript 2015 [ES6 or ES2015] (classes, modules, arrow functions, const and let, promises; 2015)
- ECMAScript 2016 (Array.prototype.includes, exponentiation operator **; 2016)
- ECMAScript 2017 (async/await; Object.values / entries; 2017)
- ECMAScript 2018 (rest / spread object, async iteration; 2018)
ECMAScript Versions
- ECMAScript 1 (first standard; 1997)
- ECMAScript 2 (editoral changes; 1998)
- ECMAScript 3 (regular expressions, try catch; 1999)
- ECMAScript 4 (classes, modules, generators, destructuring; ----)
- ECMAScript 3.1 -> 5 (strict mode, JSON native support; 2009)
- ECMAScript 2015 [ES6 or ES2015] (classes, modules, arrow functions, const and let, promises; 2015)
- ECMAScript 2016 (Array.prototype.includes, exponentiation operator **; 2016)
- ECMAScript 2017 (async/await; Object.values / entries; 2017)
- ECMAScript 2018 (rest / spread object, async iteration; 2018)
- ECMAScript 2019 (flat; 2019)
ECMAScript Versions
- ECMAScript 1 (first standard; 1997)
- ECMAScript 2 (editoral changes; 1998)
- ECMAScript 3 (regular expressions, try catch; 1999)
- ECMAScript 4 (classes, modules, generators, destructuring; ----)
- ECMAScript 3.1 -> 5 (strict mode, JSON native support; 2009)
- ECMAScript 2015 [ES6 or ES2015] (classes, modules, arrow functions, const and let, promises; 2015)
- ECMAScript 2016 (Array.prototype.includes, exponentiation operator **; 2016)
- ECMAScript 2017 (async/await; Object.values / entries; 2017)
- ECMAScript 2018 (rest / spread object, async iteration; 2018)
- ECMAScript 2019 (flat; 2019)
- ESNext
Who designs ECMAScript?
TC39 (Technical Committee 39)
How ECMAScript is designed?
Stage 0 (Strawman)
Ideas from TC39 members or contributors
https://github.com/tc39/proposals/blob/master/stage-0-proposals.md
Stage 1 (Formal proposal)
Champion, describe feature, high level API
https://github.com/tc39/proposals/blob/master/stage-1-proposals.md
Stage 2 (Draft)
Initial spec text (can includes TODOs / placeholders)
Stage 4 (Finished)
Tests (must be passed), ready to include in the standard
https://github.com/tc39/proposals/blob/master/finished-proposals.md
Optional chaining (history)
Optional chaining (history)

Optional chaining (history)
Stage 0
Optional chaining (history)
Stage 1
Optional chaining (history)
Stage 2
Optional chaining (history)
Stage 3
Optional chaining (history)
Stage 4
deck
By ireczek92
deck
- 160