Notes
Background
1This is not completely true: there are a few minor breaking changes that don’t affect code on the web. These are detailed in section D.1 and section E.1 of the ES6 specification.↩
2Source: Tweet by Allen Wirfs-Brock. https://twitter.com/awbjs/status/574649464687734785[↩]($27d2110fdb4d1c9a.md#fnref-faq_1)
Data
1[Speaking JS] parseFloat()
in (“Speaking JavaScript”).↩
2[Speaking JS] parseInt()
in (“Speaking JavaScript”).↩
3[Speaking JS] The details of rounding errors are explained in “Speaking JavaScript”.↩
4Internally, JavaScript has two zeros. Math.sign(-0)
produces the result -0
and Math.sign(+0)
produces the result +0
.↩
5Iterables are explained in another chapter.↩
6Explained in the chapter on Arrays.↩
Modularity
1The exceptions are function expressions and object literals, which you have to put in parentheses, because they look like function declarations and code blocks.↩
2[Spec] Sect. “Imports” starts with grammar rules and continues with semantics.↩
3[Spec] The specification method GetExportedNames()
collects the exports of a module. In step (7.d.i), a check prevents other modules’ default exports from being re-exported.↩
4[Spec] Sect. “Exports” starts with grammar rules and continues with semantics.↩
Collections
1[Speaking JS] “Pitfalls: Using an Object as a Map”↩
2Based on “Closing iterators”, slides by David Herman.↩
3throw()
is also an optional method, but is practically never used for iterators and therefore explained in the chapter on generators)↩
4“Combinator” (in HaskellWiki) describes what combinators are.↩
5Or rather, the function counts up until the number start
overflows and becomes Infinity
, at which point it doesn’t change, anymore.↩