Javascript in 2017

The JS environment is, as we know, “complicated”.

Every browser uses a different JavaScript engine: Chrome runs V8, Firefox runs SpiderMonkey, and Internet Explorer uses Chakra. Each implements a different subset of ES2015 features.

There are also multiple Javascript versions (or rather ECMAScript specifications)

This table outlines the major differences

 

Edition Date published Major changes
1 1997 First edition
2 1998
3 1999 Added regular expressions, better string handling, new control statements, try/catch exception handling, tighter definition of errors, formatting for numeric output and other enhancements
4 Abandoned ABANDONED!!
5 2009 Adds “strict mode,getters and setters, JSON, and more complete reflection on object properties
6 2015 ECMAScript 6 (ES6) –> ECMAScript 2015 (ES2015) Classes and modules, for/of loops, arrow functions, binary data, typed arrays, collections (maps, sets and weak maps), promises, number and math enhancements, reflection, and proxies (metaprogramming for virtual objects and wrappers). Also known as “ES6 Harmony.”
7 2016 ECMAScript 2016 Language reform, code isolation, control of effects and library/tool enabling from ES2015, includes two new features: the exponentiation operator (**) and Array.prototype.includes.
8 2017 Concurrency and atomics, zero-copy binary data transfer, more number and math enhancements, syntactic integration with promises (await/async), observable streams, SIMD types, better metaprogramming with classes, class and instance properties, operator overloading, value types (first-class primitive-like objects), records and tuples, and traits.

For compatibility between browsers, see these tables: http://caniuse.com/ and http://kangax.github.io/compat-table/es6/ (multiple tables)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.