2019-05

Unpacking hoisting

[2019-05-30] dev, javascript

Quoting a recent tweet by ES6 spec author Allen Wirfs-Brock:

Hoisting is old and confused terminology. Even prior to ES6: did it mean “moved to the top of the current scope” or did it mean “move from a nested block to the closest enclosing function/script scope”? Or both?

This blog post proposes a different approach to describing declarations (inspired by a suggestion by Allen).

2019-04

The new ECMAScript module support in Node.js 12

[2019-04-23] dev, javascript, nodejs, jsmodules

Node.js 12 (which was released on 2019-04-23) brings improved support for ECMAScript modules. It implements phase 2 of the plan that was released late last year. For now, this support is available behind the usual flag --experimental-modules.

Read on to find out how exactly this new support for ECMAScript modules works.

Brief spoiler: The filename extension .mjs will be more convenient, but .js can also be enabled for ES modules.

2019-01

ES2019: JSON superset

[2019-01-29] dev, javascript, es2019, json

The proposal “JSON superset” (by Richard Gibson) is at stage 4 and therefore part of ECMAScript 2019. This blog post explains how it works.

ES2019: String.prototype.trimStart / String.prototype.trimEnd

[2019-01-29] dev, javascript, es2019

The proposal “String.prototype.trimStart / String.prototype.trimEnd” (by Sebastian Markbåge) is at stage 4 and therefore part of ECMAScript 2019. This blog post explains how it works.

ES2019: Symbol.prototype.description

[2019-01-29] dev, javascript, es2019

The proposal “Symbol.prototype.description” (by Michael Ficarra) is at stage 4 and therefore part of ECMAScript 2019. This blog post explains how it works.

ES2019: Well-formed JSON.stringify

[2019-01-29] dev, javascript, es2019, json

The proposal “Well-formed JSON.stringify” (by Richard Gibson) is at stage 4 and therefore part of ECMAScript 2019. This blog post explains how it works.

ES2019: Object.fromEntries()

[2019-01-28] dev, javascript, es2019

The proposal “Object.fromEntries” (by Darien Maillet Valentine, Jordan Harband and Kevin Gibbons) is at stage 4 and therefore part of ECMAScript 2019. This blog post explains how it works.

Future JavaScript: what is still missing?

[2019-01-27] dev, javascript, esnext

In recent years, JavaScript has grown considerably in size. This blog post explores what’s still missing.

2018-12

Creating and filling Arrays of arbitrary lengths in JavaScript

[2018-12-23] dev, javascript

The best way of creating an Array, is via a literal:

const arr = [0,0,0];

Alas, that isn’t always an option, e.g. when creating large Arrays. This blog post examines what to do in those cases.

ECMAScript modules in Node.js: the new plan

[2018-12-20] dev, javascript, nodejs, jsmodules

Status of ECMAScript module (ESM) support in Node.js:

  • Experimental support for ESM was added in Node.js 8.5.0 (2017-09-12).
  • Afterwards, the Node.js Foundation Technical Steering Committee formed the Modules Team to help design missing pieces and to guide the implementation towards its (non-experimental) release. The Modules Team is comprised of people from several different web development areas (frontend, backend, JS engines, etc.).

In October, the Modules Team published the document “Plan for New Modules Implementation”. This blog post explains what it contains.