// // ECMAScript 6 Cheat Sheet // ////////////////////////////////////////////////////////////////////// //--------------------------------------------------------------- // Arrows (and this) //--------------------------------------------------------------- // Expression bodies var odds = evens.map(v => v + 1); var nums = evens.map((v, i) => v + i); // Statement bodies nums.forEach(v => { if (v % 5 === 0) fives.push(v); }); //--------------------------------------------------------------- // Modules //--------------------------------------------------------------- // lib/math.js export function sum(x, y) { return x + y; } export var pi = 3.141593; // app.js import * as math from "lib/math"; alert("2π = " + math.sum(math.pi, math.pi)); // otherApp.js import {sum, pi} from "lib/math"; alert("2π = " + sum(pi, pi)); // lib/mathplusplus.js export * from "lib/math"; export var e = 2.71828182846; export default function(x) { return Math.exp(x); } // app.js import exp, {pi, e} from "lib/mathplusplus"; alert("2π = " + exp(pi, e)); //--------------------------------------------------------------- // Classes //--------------------------------------------------------------- export default class AnimPanel { constructor(options = {}) { // options: // \$el: The jQuery selector that defines each description // (required) // // Internal Variables // this.options = $.extend(this.options, { name: 'Default Name' }); this.foo = 'bar'; _init(); } // // Private Methods // ////////////////////////////////////////////////////////////////////// _init() { _addEventListeners(); } _addEventListeners() { } // // Public Methods // ////////////////////////////////////////////////////////////////////// someMethod() { } static staticMethod() { } } //--------------------------------------------------------------- // Template Strings //--------------------------------------------------------------- // Basic literal string creation let text = `This is a pretty little template string.` // Multiline strings `In ES5 this is not legal.` // Interpolate variable bindings var name = "Bob", time = "today"; `Hello ${name}, how are you ${time}?` // Unescaped template strings String.raw`In ES5 "\n" is a line-feed.` //--------------------------------------------------------------- // Default + Rest + Spread //--------------------------------------------------------------- function f(x, y=12) { // y is 12 if not passed (or passed as undefined) return x + y; } f(3) == 15 function f(x, ...y) { // y is an Array return x * y.length; } f(3, "hello", true) == 6 function f(x, y, z) { return x + y + z; } // Pass each elem of array as argument f(...[1,2,3]) == 6 //--------------------------------------------------------------- // Let + Const //--------------------------------------------------------------- function f() { { let x; { // okay, block scoped name const x = "sneaky"; // error, const x = "foo"; } // okay, declared with `let` x = "bar"; // error, already declared in block let x = "inner"; } }