Sök…


const / let deklarationer

Till skillnad från var är const / let bunden till lexikalisk omfattning snarare än funktionsomfång.

{
  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) // 1
console.log(y) // ReferenceError: y is not defined
console.log(z) // ReferenceError: z is not defined

Kör i RunKit

Pilfunktioner

Pilfunktioner binder automatiskt till det "lexikala" omfånget för den omgivande koden.

performSomething(result => {
  this.someVariable = result
})

mot

performSomething(function(result) {
  this.someVariable = result
}.bind(this))

Exempel på pilfunktion

Låt oss överväga detta exempel, som matar ut kvadraten för siffrorna 3, 5 och 7:

let nums = [3, 5, 7]
let squares = nums.map(function (n) {
  return n * n
})
console.log(squares)

Kör i RunKit

Funktionen som skickas till .map kan också skrivas som pilfunktion genom att ta bort function och istället lägga till pilen => :

let nums = [3, 5, 7]
let squares = nums.map((n) => {
  return n * n
})
console.log(squares)

Kör i RunKit

Detta kan emellertid skrivas ännu mer kortfattat. Om funktionen kroppen består av endast ett uttalande och uttalandet beräknar returvärdet kan klammerparenteserna för inslagning funktionen kroppen tas bort, liksom return sökord.

let nums = [3, 5, 7]
let squares = nums.map(n => n * n)
console.log(squares)

Kör i RunKit

destrukturering

    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);

strömma

/* @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 klass

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);


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow