Každý z nás sa už určite stretol s negatívnymi názormi na JavaScript (JS). Na to, ako používaný tento jazyk je, je až neuveriteľné, že sa nájde toľko jeho odporcov. Dá sa v ňom naprogramovať prakticky čokoľvek: od trápnych animácií na webe až po seriózne multiplatformové programy. Čo však ľudia na JS tak nenávidia, a sú tieto problémy vyriešené v ES6?

ES6 nie je vo svete JS žiadnou novinkou. Táto špecifikácia priniesla obrovské množstvo zmien s cieľom JS značne zjednodušiť. A hoci táto špecifikácia vyšla ešte v júni 2015, neodporúča sa používať v produkcií. Kameňom úrazu je neúplná podpora hlavne pri starších prehliadačoch. Ako teda ES6 používať a mať zaručenú kompatibilitu? Jedným z riešení je Babel. Tento nástroj kompiluje všetok Váš kód napísaný v ES6 do starších verzií JS, a to dokonca tak dobre, že výsledný kód možno použiť aj napríklad v Internet Exploreri 8.

Čo je nové v ES6?

Ako som už spomenul vyššie, ES6 prinieslo nespočetné množstvo vylepšení. Celkovo sa JS v spojení s ES6 javí takmer ako nový jazyk. Poďme sa teda pozrieť na niektoré zo zmien, ktoré táto verzia priniesla.

Konštanty

Áno, presne tak. Predchádzajúca generácia JS konštanty nepoznala. A aj keď áno, tak to bolo tak komplikované, že to vlastne hádam nikto pre istotu nepoužil. Porovnajte:

// ES5
Object.defineProperty(typeof global === "object" ? global : window, "PI", {
    value: 3.141593,
    enumerable: true, 
    writable: false,
    configurable: false
});
PI > 3.141593;

// a ES6...
const PI = 3.141593;
PI > 3.141593;

Scopes

Možno ste sa niekde stretli s premennou, ktorá mala namiesto kľúčového slova var slovo let. Toto nové slovíčko v JS značí premennú, ktorá existuje len v bloku, kde je definovaná. To znamená, že ak premennú s let definujete napríklad v cykle a skúsite ju vypísať mimo cyklu, nastane error, pretože premenná mimo cyklu neexistuje.

Scopes takisto platia aj pre funkcie. V tomto prípade ale pre všetky, bez rozdielu. Rovnaká definícia, funkcia ale nie je dostupná v rodičovských blokoch.

„Arrow“ funkcie

Nový typ funkcií. Jednoduchšia syntax, lepšie zaobchádzanie s this. Všetci leníví programátori sa práve zamilovali.

// Klasická funkcia
function a() {
    console.log('ahoj');
}

// "Arrow" funkcia
() => {
    console.log('ahoj');
}

// ... dokonca ju môžeme ešte viac zjednodušiť!
() => console.log('ahoj');

Nepovinné parametre a rozširujúci operátor

V ES5 to bola bolesť. Obchádzať získavanie nepovinných parametrov rôznymi funkciami naviac. Preto sa buď radšej nepoužívali, alebo sa pre istotu nepoužívali žiadne parametre. Nepovinné parametre sú potom ale rozšírené aj rozširujúcim operátorom, čo sú v podstate tri bodky ...parametre pred názvom parametra. Týmto získame nekonečný počet parametrov, ktoré budú uložené v poli s názvom uvedeným za „tromi bodkami“.

// "Arrow" funkcia s nepovinným parametrom
(a = 12) => console.log(a);

// "Arrow" funkcia s nekonečno parametrami
(a, ...parametre) => {
    let vsetko = [a, ...parametre];
    return vsetko;
}

Nabudúce sa zoznámime s ďalšími vychytávkami ES6 ako šablóny alebo vylepšeniami v objektoch.