Prefer const. You can use it for all variables whose values never change.
Otherwise, use let – for variables whose values do change.
Avoid var.
An arrow function is the superior solution whenever a function fits into a single line:
For multi-line functions, traditional functions work well, too (with the caveat of this not being lexical):
Single-line functions tend to be throw-away. If a function isn’t then a traditional function has the advantage that you can name it, which is useful for documentation and debugging.
Properties in object literals: As soon as an object literal spans multiple lines, I add a comma after the last entry. Such a trailing comma has been legal since ES5. It makes adding, removing and rearranging entries simpler. As a consequence, method definitions always end with },:
Modules: don’t mix default exports and named exports. Your module should either specialize on a single thing or export multiple, named, things.
Exception: Module with a default export that exposes some internals for testing (via named exports).
In the chapter on callable entities (traditional functions, arrow functions, classes, etc.) there is a section that gives recommendations (when to use which one etc.).
Additionally, the ES5 coding style tips in “Speaking JavaScript” are still relevant for ES6.