TC39, ECMAScript, and the Future of JavaScript

TC39, ECMAScript, and the Future of JavaScript

By | June 26th, 2017
No Comments on TC39, ECMAScript, and the Future of JavaScript

TC39 means Technical Committee number 39. It’s part of ECMA, the

institution which standardizes the JavaScript language under the

“ECMAScript” specification.

The ECMAScript specification defines how JavaScript works on a discrete step-by-step basis. Among other things, the specification explains:

  • how the string 'A' is NaN
  • how the string 'A' is not equal to NaN
  • how NaN isNaN but is not equal to NaN
  • and why introducing Number.isNaN was obviously a very good idea…
isNaN(NaN) // true
isNaN('A') // true
'A' == NaN // false
'A' === NaN // false
NaN === NaN // false

// … solution!

Number.isNaN('A') // false
Number.isNaN(NaN) // true

It explains details about when positive zero is equal to negative zero – and when it isn’t…

+0 == -0 // true
+0 === -0 // true
1/+0 === 1 / -0 // false
TC39 follows a process to develop language features that’s based on maturity stages. Once a proposal is mature enough, TC39 updates the specification with the changes presented in the proposal. Up until recently, TC39 relied on an older flow based on Microsoft Word. But after ES3 came out, they spent ten years with virtually no changes making their way to the specification. After that, it took them another four years for ES6 to materialize.


Nisheeth Bhakuni