szczecinski.eu

szczecinski.eu

  • Kurs React
  • Zaawansowany React
  • Kurs Redux
  • Kurs ES6
  • Blog
  • Kontakt

›Szybki kurs ES6

Szybki kurs ES6

  • Specyfikatory zasięgu - const, let
  • Template strings, tagged template strings
  • Arrow functions
  • Parametry domyślne, destructuring i rest
  • Skrócona notacja obiektowa, dynamiczne właściwości obiektu, spread
  • Klasy
  • Moduły
  • Kod asynchroniczny - Promise
  • Dekoratory

Specyfikatory zasięgu - const, let

ES6 wprowadza dwa nowe typy zmiennych - const oraz let. Oba są widoczne jedynie w zasięgu lokalnym, w którym zostały zdefiniowane i powinny być używane zamiast dotychczasowego var. Zmiennych tego typu nie można też ponownie deklarować.

const używamy wszędzie tam, gdzie przypisanie do zmiennej nie będzie ulegać zmianie. Użycie tego typu nie oznacza że nie ma możliwości mutowania danych - jeżeli do zmiennej przypiszemy obiekt, wciąż możemy (lecz nie powinniśmy!) modyfikować jego wartości.

Jeżeli chcemy by nasz obiekt był całkowicie nie mutowalny, możemy użyć Object.freeze

const a = 42;
a = 43; // błąd - nie można zmienić przypisania

const b = { theAnswerToLifeTheUniverseAndEverything: undefined }
b.theAnswerToLifeTheUniverseAndEverything = 42; // poprawnie

const c = { theAnswerToLifeTheUniverseAndEverything: undefined };
Object.freeze(c);
c.theAnswerToLifeTheUniverseAndEverything = 42; // błąd

const d = [];
d.push(42); // poprawnie

let jest podobny w działaniu do var dostępny jest on jednak tylko w zasięgu, w którym został zadeklarowany.

Dodatkową różnicą jest to, że w przypadku stosowania closure wartości zmiennej będą kopiowane, a nie przekazywane przez referencję.

if(true) {
  var a = 42;
  let b = 42;
}
console.log(a); // 42;
console.log(b); // błąd - b nie jest zdefiniowane

// wyświetli dwa razy "2"
for(var i = 0 ; i < 2 ; i++) {
  setTimeout(function() { console.log(i) });
}              

// wyświetli "0" i "1"
for(let i = 0 ; i < 2 ; i++) {
  setTimeout(function() { console.log(i) });
}         
Template strings, tagged template strings →
Bartosz Szczeciński © 2019 Materiał dostępny na zasadach licencji MIT.