W ES6 poświęcono wiele uwagi skracaniu składni dla często używanych konstrukcji. Wspominałem już o "Arrow functions", czy domyślnych parametrach funkcji, ale to nie wszystko, co otrzymaliśmy do dyspozycji.
Destructuring
Pod tym złowieszczo brzmiącym słowem, które niektórzy lubią tłumaczyć jako "destrukturyzację" kryje się jedna z najpraktyczniejszych funkcjonalności dodanych w EcmaScript 6. Zobaczmy na czym polega na przykładzie:
const temperature = {
min: 17,
max: 25,
avg: 20
};
const { min, max } = temperature;
console.log(min); // 17
console.log(max); // 25
Najprościej rzecz ujmując destrukturyzacja pozwala nam więc na wyciąganie zmiennych z istniejących obiektów w bardzo szybki i przystępny sposób. Działa to również w przypadku argumentów funkcji:
const temperature = {
min: 17,
max: 25,
avg: 20
};
function getMax({ max }) {
return max;
}
console.log(getMax(temperature)); // 25
Powyższy przykład można skrócić stosując Arrow function:
const temperature = {
min: 17,
max: 25,
avg: 20
};
const getMax = ({ max }) => max;
console.log(getMax(temperature)); // 25
Destructuring działa nie tylko dla obiektów, ale także dla tablic. Sposób użycia jest analogiczny, jak w przypadku obiektów, a więc zamiast nawiasów klamrowych stosujemy prostokątne:
const arr = [1, 2, 3, 4];
const [a, b, c] = arr;
console.log(a, b, c); // 1 2 3
Możemy także pominąc dowolną liczbę elementów tablicy stosując odpowiednią ilość przecinków:
const arr = [1, 2, 3, 4];
const [a, , , d] = arr;
console.log(a, d); // 1 4
Skrócona inicjalizacja obiektów
To kolejny prosty i przydatny skrót skrót składniowy. Podczas tworzenia literału obiektu nie musimy podawać już nazwy zmiennej przechowującej wartość jeśli parametr, do którego ją przypisujemy nazywa się tak samo:
const name = "Dżesika Brajanek";
const age = 16;
const person = {
name,
age
};
console.log(person); // {name: "Dżesika Brajanek", age: 16}
Skrócona składnia dla deklaracji metod obiektu
Tutaj w zasadzie nie ma co tłumaczyć, przykład mówi sam za siebie.
const person = {
name: "Dżesika Brajanek",
age: 16,
toString() {
console.log(`Nazywam się ${this.name} i mam ${this.age} lat.`)
}
};
person.toString(); // Nazywam się Dżesika Brajanek i mam 16 lat.