Evolution of JavaScript


Who am I?
Nicu Micleușanu
JSMD
JS Enthusiast
http://github.com/micnic/
https://www.npmjs.com/~micnic
Why this talk?
History is important!


Internet before JavaScript
Legend of JavaScript

Brendan Eich
10 days
Initial name: Mocha
Release name: LiveScript
Final name: JavaScript
Browser Wars and JavaScript
Internet Explorer's JScript

Standardization
ES1 - 1997
ES2 - 1998
ES3 - 1999 (RegExp, try/catch)

ES4 (2000 - X)

Classes, Modules, Static Typing, Generators, Iterators, Destructuring
JSON (~2000)

Douglas Crockford

Human-readable, compact format,
language independent
jQuery (2006)


John Resig
CSS3 Selectors for DOM manipulation, simplified AJAX, helpful utilities, plugins

ES5 (2009)
ES3.1
JSON, strict mode, getters and setters

Node.js (2009)

Ryan Dahl

JavaScript on the server-side, async I/O, C/C++ bindings
npm (2010)
Isaac Z. Schlueter
Huge registry, packages for all JS environments, dependency resolving, helpful CLI



CoffeeScript (2009)
Transpiled to JavaScript, Influenced Future of JavaScript, Inspired by Ruby, Python and Haskell, Classes, Arrow Functions, Destructuring, String Interpolation

TypeScript (2012)

JavaScript Superset, Optional Static Typing, Interfaces, Enums, Latest EcmaScript Support, Type Definitions for most JavaScript Projects
War of JS Frameworks



2010
2013
2014

React / Angular / Vue
npm downloads
ES6 / ES2015 (harmony)
Classes, Modules, Generators, Iterators, Destructuring, Promises

TC39
Stage 0: Strawman
Stage 1: Proposal
Stage 2: Draft
Stage 3: Candidate
Stage 4: Finished

ES2016
Array.prototype.includes(),
Exponentiation operator
ES2017
Async functions,
Shared memory,
String padding,
Object.entries() / Object.values()
ES2018
Async iteration,
Rest / Spread object properties,
Regular Expressions syntax updates,
Promise.prototype.finally()
What's next?
ES.NEXT
Stage 0: 20
Stage 1: 45
Stage 2: 16
Stage 3: 15
Finished: 18
Inactive: 16
Interesting Proposals
Class fields and private class members (3)
BigInt (3)
Decorators (2)
Optional Chaining (1)
Do Expressions (1)
Pattern Matching (1)
JavaScript Standard Library (1)
Babel

Use next generation JavaScript, today.
Webpack
Bundle everything, HTML, CSS, JS, Images ...

ESLint
Write good quality JavaScript

THE END

Evolution of JavaScript
By Nicu Micleusanu
Evolution of JavaScript
- 297