In this blog post, I show six tricks enabled by new ES6 features. At the end of each section, I point to related material in my book “Exploring ES6” (which is free to read online).
In this blog post, we look at problems that arise when template literals contain whitespace:
This blog post shows how to handle trees of ES6 Promises, via an example where the contents of a directory are listed asynchronously.
In Promise-based asynchronous code, rejections are used for error handling. One risk is that rejections may get lost, leading to silent failures. For example:
function main() {
asyncFunc()
.then(···)
.then(() => console.log('Done!'));
}
If asyncFunc()
rejects the Promise it returns then that rejection will never be handled anywhere.
Let’s look at how you can track unhandled rejections in browsers and in Node.js.
This blog post gives tips for error handling in asynchronous, Promise-based functions.
In this blog post, I argue that it should be possible to have multiple implementations of the same npm package (same name, same version).
bind()
ES6 arrow functions are often a compelling alternative to Function.prototype.bind()
.
The main use case for ES6 symbols is that you can use them as property keys that can’t clash with other property keys.
In case you think that name clashes don’t matter, here are three examples of where name clashes caused problems in the evolution of the JavaScript standard library:
Enough with the fatigue – tips against feeling overwhelmed:
Object.getOwnPropertyDescriptors()
The ECMAScript proposal “Object.getOwnPropertyDescriptors()
” by Jordan Harband and Andrea Giammarchi is part of ECMAScript 2017. This blog post explains it.