We dedicate this site to all the hardworking Web application developers trying to stay ahead of the game in an ever-changing landscape of chaos and fun.
Click a solid lime green box below to try out a new feature in ECMAScript supported by either traceur or natively in your browser which supports ?% of the examples.
Click the or the next to the walkthrough name to view the specification documentation.
At the moment, Firefox Nightly has the best support for ES6 with 75% of the ES6 features implemented. Go get it.
The next best recommendation is Chrome Canary with 65% of ES6 features implemented.
Right behind the bleeding edge options are Firefox Stable at 64% and Chrome Stable at 59% of ES6 features implemented.
Not worth your time with only 11% of ES6 features implemented. Maybe IE 12 in Windows 9 10 will have better support.
I recently gave a talk to some fine developers at the Houston TechFest 2014. I did not know that I had time allotted to me to talk and, therefore, had not prepared any material.
When I arrived at the lectern, I looked out over the room and mentioned my unpreparedness. While I plugged in my laptop to the projector, I thought about all the cool stuff I had learned and used recently. When I said that I did not know what to talk about, someone called out "JavaScript"! I asked why I should talk about that; the audience member replied, "Because we're in the JavaScript room!"
Being no stranger to JavaScript, I asked how many people had heard of ECMAscript 6, ECMAscript Harmony, or the like. Only one person raised their hand! I talked about the features in the upcoming version of ES and saw that a lot of the audience appeared interested in the topic. The following week, I started asking some of my coworkers if they knew about ES6 and the cool stuff in it. I found very few that did.
I searched around the World Wide Web to find some tutorials from which my friends and coworkers could learn. I found a few, sprinkled around the Internet, containing some pretty dated material. So, I have tried to bring it all together in one place. I hope you get some use out of it.
Curtis Schlak
data-es6.js
for information about ES6 features
and the tests that demonstrate that.
Interesting narrated walkthroughs | Supported by...? | |
---|---|---|
let and const |
||
class and super |
||
Syntactic sugar for property and method declarations | ||
Arrow functions | ||
Promises | ||
Proxy objects | ||
Reflection methods | ||
"Spreading", otherwise known as splicing, arrays and strings into other arrays and function calls | ||
Sticky regular expressions | ||
Collections | Native non-Array collections | |
Weak native non-Array collections | ||
Strongly-typed Arrays | ||
Views into strongly-typed Arrays | ||
Destructuring | Complex direct assignments | |
Complex assignments of default parameters | ||
Complex assignments of parameter values | ||
Complex assignment to a spread | ||
Flow control | for..of loops (instead of for..in ) |
|
Generator functions (and the yield keyword) |
||
Functions | Turning functions into methods | |
Default function parameters | ||
Binding the remaining parameters of a function to a single variable | ||
Name property of functions | ||
Tail-call recursion | ||
Block-level scoping of function declarations | ||
Metaprogramming | Computed properties | |
Getter and setter prototype property | ||
Mixin properties of other objects | ||
Use a function to set the prototype of an object | ||
Modules | export keyword |
|
Module loader | ||
String handling | Template strings | |
Destructuring template strings | ||
New string from repeating a single string | ||
Programmatic substitution in template strings | ||
Symbols | Simple symbols as properties | |
Advanced symbols for conversion |
Boring text-only experiences | Supported by...? | |
---|---|---|
Array extensions | Array.from | |
Array.of | ||
Array.prototype.copyWithin | ||
Array.prototype.entries | ||
Array.prototype.fill | ||
Array.prototype.find | ||
Array.prototype.findIndex | ||
Array.prototype.keys | ||
Array.prototype.values | ||
Array.prototype[Symbol.unscopables] | ||
Math extensions | Math.acosh (inverse hyperbolic cosine) | |
Math.asinh (inverse hyperbolic sine) | ||
Math.atanh (inverse hyperbolic tangent) | ||
Math.cbrt (cube root) | ||
Math.clz32 (count leading zero bits) | ||
Math.cosh (hyperbolic cosine) | ||
Math.expm1 (ex - 1) | ||
Math.fround (float round) | ||
Math.hypot (square root of the sum of squares) | ||
Math.imul (integer multiplication) | ||
Math.log10 (base-10 logarithm) | ||
Math.log1p (natural logarithm of 1 + x) | ||
Math.log2 (base-2 logarithm) | ||
Math.sign (the sign of a number) | ||
Math.sinh (hyperbolic sine) | ||
Math.tanh (hyperbolic tangent) | ||
Math.trunc (truncation of the fraction part of a number) | ||
Number extensions | Number.EPSILON | |
Number.MAX_SAFE_INTEGER | ||
Number.MIN_SAFE_INTEGER | ||
Number.isFinite | ||
Number.isInteger | ||
Number.isNaN | ||
Number.isSafeInteger | ||
Regular expression extensions | RegExp "u" flag | |
RegExp.prototype.compile | ||
RegExp.prototype.match | ||
RegExp.prototype.replace | ||
RegExp.prototype.search | ||
RegExp.prototype.split | ||
String handling | String.fromCodePoint | |
String.prototype HTML methods | ||
String.prototype.codePointAt | ||
String.prototype.contains | ||
String.prototype.endsWith | ||
String.prototype.normalize | ||
String.prototype.startsWith | ||
Unicode code point escapes |