Skip to content

ECMAScript, TC39 and The Future of JavaScript. Slides/notes/links from my meetup talk at DenverScript https://www.meetup.com/DenverScript/events/233376991/

License

Notifications You must be signed in to change notification settings

w3cj/es-explained

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

To view this as a slide deck:

npm install -g reveal-md

npm start


ECMAScript, TC39 and The Future of JavaScript

CJ on Denver Devs


Agenda

  • whoami
  • The History of JavaScript
  • TC39 Process
  • es-next

whoami


CJ

Instructor, Sr. Full Stack Developer

at


The History of JavaScript


1995: JavaScript Beginngings

  • May - Brendan Eich is recruited by Netscape to create "Scheme in the Browser"
    • Developed in 10 Days under the code name "Mocha"
  • September - "LiveScript" ships with Netscape Navigator 2.0 beta
  • December - Renamed to "JavaScript", ships with Netscape Navigator 2.0 beta 3


Java !== JavaScript

Comic via coderanch.com


Early Browser Wars

#### vs


August 1996: Microsoft reverse engineers JavaScript for IE 3

  • Named JScript to prevent lawsuit

via Wikipedia


Standardization: ECMA-262

  • November 1996: Netscape delivers JavaScript to ECMA International for standardization
  • June 1997: The first edition of ECMA-262 was adopted by the ECMA General Assembly
  • The name "ECMAScript" was a compromise, Brendan Eich says it "sounds like a skin disease"

via Wikipedia

ECMAScript 1st Edition PDF


JavaScript 1.1: Netscape Navigator 3.0

  • Any JavaScript error would open a pop-up.
  • The Number constructor would throw if the parameter could not be converted successfully
Number('some string');
  • If at least one of the operands of the equals operator was Boolean, undefined or Number it will then coerse both operands to Number.
if(new Object() == false) {}


Continued: JavaScript 1.1: Netscape Navigator 3.0

  • The reference to the value undefined was not present.

undefined appeard in JS 1.3

undefined polyfill on github

Notes on explicit JavaScript versioning


June 1998: ECMAScript 2nd Edition

Added 40 future reserved words (38 are also a Java keyword).

abstract do import short
boolean double instanceof static
byte enum int super
case export interface switch
catch extends long synchronized
char final native throw
class finally package throws
const float private transient
debugger goto protected try
default implements public volatile

December 1999: ECMAScript 3rd Edition

Introduced:

  • try/catch
  • strict comparison
  • instanceof
  • fn.apply
  • switch
  • function expressions
  • Array helpers (push, pop ,slice, concat, etc)
  • Regular expressions


OK.... 7 years later


2007: ECMAScript 4th Edition

  • Abandoned in 2008

  • There were a lot of very strong opinions about how to move JavaScript forward, many of which were incompatible, some of which had mostly assembled what they thought would be the 4th edition before things fell apart

"ES4 was so large and so innovative that there were doubts about whether it could be successfully specified and implemented." -Douglas Crockford


August 2008: Brendan Eich proposes "Harmony" Process

  1. Focus work on ES3.1 with full collaboration of all parties
  2. Collaborate on the next step beyond ES3.1
  3. Some ES4 proposals have been deemed unsound for the Web, and are off the table for good: packages, namespaces and early binding. This conclusion is key to Harmony.
  4. Other goals and ideas from ES4 are being rephrased to keep
    consensus in the committee.

Brendan Eich: ES Harmony


December 2009: ECMAScript 5th Edition

  • strict mode
  • getters and setters
  • Higher order array methods (forEach, map, reduce, etc)
  • JSON
  • Object.seal and Object.freeze
  • immutable undefined

Before ES5:

undefined=1;
alert(undefined == 1); // true

June 2011: ECMAScript 5.1 edition

  • A revision of 5.0 that corrects some errors in the document itself.

The ISO edition of the ES5 specification incorporates a number of editorial and technical corrections including those listed in the current ES5 errata.

It contains no new language or library features. TC39 is continuing its longer term work on “ECMAScript Harmony” which is intended to be the next version to include any new features.

Announcing ECMAScript 5.1


June 2015: ECMAScript 2015 (6th Edition)

Official goals: a better language for

  • applications
  • libraries
  • code generators

June 2015: ECMAScript 2015 (6th Edition)

  • Classes
  • Arrow functions
  • Iterators (and generators)
  • Proxies
  • Destructuring
  • let and const
  • and much much more

June 2016: ECMAScript 2016 (7th Edition)


ECMAScript at a glance

  • June 1997 - ES1
  • June 1998 - ES2
  • December 1999 - ES3

10 Years Go By

  • December 2009 - ES5
  • December 2011 - ES5.1

4 Years Go By

  • June 2015 - ES2015 (6)
  • June 2016 - ES2016 (7)

TC39


Technical Committee 39

https://github.com/hemanth/tc39-members

TC39 Org on Github!

TC39 Meeting Notes

ESDiscuss


The TC39 Process


The Ecma TC39 committee is responsible for evolving the ECMAScript programming language and authoring the specification. The committee operates by consensus and has discretion to alter the specification as it sees fit. However, the general process for making changes to the specification is as follows.

https://tc39.github.io/process-document/


Stage 0: Strawman

Stage 1: Proposal

Stage 2: Draft

Stage 3: Candidate

Stage 4: Finished

Stage 0 Proposals

Finished Proposals



You may be asking...


How can I try these new features if browsers haven't implemented them yet??




Resources


Resources: Media


Thanks!

ECMAScript, TC39 and The Future of JavaScript

CJ on Denver Devs

About

ECMAScript, TC39 and The Future of JavaScript. Slides/notes/links from my meetup talk at DenverScript https://www.meetup.com/DenverScript/events/233376991/

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published