> 2. Array helper functions
`map`, `filter`, `reduce`, `some` and `every` were actually added in ES5.1. Only `find` and the unlisted `findIndex` come from ES6.
Meanwhile Array.from which was added in ES6 goes unlisted.
> 3. Arrow functions
While the reduction in definition boilerplate is great, missing is the very important (and convenient!) fact that arrow functions resolve `this` lexically (as a normal variable rather than a special case).
> 4. Classes
Would have benefited from mentioning the most convenient feature of classes by far: the `super` proxy to calling a method of the superclass on `this` (most useful with constructors): the ES5
<Superclass>.prototype.aMethod.call(this)
becomes: super.aMethod()
which also helps a lot when moving methods around.> 6. Template strings
Missing: you can "tag" template strings to invoke user-defined functions on the contents and do intermediate processing and interpolation yourself e.g.
sql`foo ${bar}`
will invoke `sql(['foo ', ''], <value of bar>)`.> 7. Default function arguments
Missing note: unlike e.g. Python, default arguments are dynamic and sequential (similar to let<star>[0]) so you can define a `function foo(a, b=a)`.
> 8. Rest and spread operators
Actually the opposite for once, mentions that rest and spread operators can be used with object content, sadly that's currently a stage3 proposal, definitely not part of ES6.
> 9. Destructing
Missing notes:
* the destructuring is recursive (you're not limited to a single level)
* you don't have to "[assign values] to variables of the same name as properties" when destructuring objects:
let {name: a} = a_call();
will bind the value of the property "name" to the "a" local variable.
* you can provide default values to the destructuring pattern e.g. let [a, b=3] = [1]
this can be combined with renaming for object destructuring
[0] http://docs.racket-lang.org/reference/let.html#%28form._%28%... can't use an actual star there because HN comment formatting remains a complete trash fire and thus decides to emphasize half my comment and swallow the mark of the first list item. And still does not print let∗.