ECMAScript 2015 (ES6) with Node.js
const/let declarations
Section titled “const/let declarations”Unlike var, const/let are bound to lexical scope rather than function scope.
{ var x = 1 // will escape the scope let y = 2 // bound to lexical scope const z = 3 // bound to lexical scope, constant}
console.log(x) // 1console.log(y) // ReferenceError: y is not definedconsole.log(z) // ReferenceError: z is not definedArrow functions
Section titled “Arrow functions”Arrow functions automatically bind to the ‘this’ lexical scope of the surrounding code.
performSomething(result => { this.someVariable = result})vs
performSomething(function(result) { this.someVariable = result}.bind(this))Arrow Function Example
Section titled “Arrow Function Example”Let’s consider this example, that outputs the squares of the numbers 3, 5, and 7:
let nums = [3, 5, 7]let squares = nums.map(function (n) { return n * n})console.log(squares)The function passed to .map can also be written as arrow function by removing the function keyword and instead adding the arrow =>:
let nums = [3, 5, 7]let squares = nums.map((n) => { return n * n})console.log(squares)However, this can be written even more concise. If the function body consists of only one statement and that statement computes the return value, the curly braces of wrapping the function body can be removed, as well as the return keyword.
let nums = [3, 5, 7]let squares = nums.map(n => n * n)console.log(squares)destructuring
Section titled “destructuring” let [x,y, ...nums] = [0, 1, 2, 3, 4, 5, 6];console.log(x, y, nums);
let {a, b, ...props} = {a:1, b:2, c:3, d:{e:4}}console.log(a, b, props);
let dog = {name: 'fido', age: 3};let {name:n, age} = dog;console.log(n, age);/* @flow */
function product(a: number, b: number){ return a * b;}
const b = 3;let c = [1,2,3,,{}];let d = 3;
import request from 'request';
request('http://dev.markitondemand.com/MODApis/Api/v2/Quote/json?symbol=AAPL', (err, res, payload)=>{ payload = JSON.parse(payload); let {LastPrice} = payload; console.log(LastPrice);});ES6 Class
Section titled “ES6 Class”class Mammel { constructor(legs){ this.legs = legs; } eat(){ console.log('eating...'); } static count(){ console.log('static count...'); }}
class Dog extends Mammel{ constructor(name, legs){ super(legs); this.name = name; } sleep(){ super.eat(); console.log('sleeping'); }}
let d = new Dog('fido', 4);d.sleep();d.eat();console.log('d', d);