TC39, ECMAScript, and the Future of JavaScript

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.

Source

Leave a Comment

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