Úvodná » kódovanie » ECMAScript 6 - 10 Úžasné nové funkcie

    ECMAScript 6 - 10 Úžasné nové funkcie

    Vedeli ste, že JavaScript (spolu s jazykom JScript a ActionScript) je implementáciou špecifikácie skriptovacieho jazyka na všeobecnej strane klienta nazývanej ECMAScript? Ak chceme, aby táto škaredá definícia bola trochu atraktívnejšia, môžeme povedať, že ECMAScript (alebo oficiálne ECMA-262) je štandard, ktorý definuje, ako používame JavaScript a čo môžeme dosiahnuť s tým.

    Posledná, 6. vydanie jazyka ECMAScript 2015 (alebo ES6) je pravdepodobne najvýznamnejšia aktualizácia od prvej verzie v roku 1997. Hlavným cieľom najnovšej verzie je poskytnúť lepšiu podporu pre vytváranie väčších aplikácií a knižníc. Znamená to zrelšiu syntax, nové skratky na zjednodušenie kódovania a tiež nové metódy, kľúčové slová, typy údajov a mnoho ďalších vylepšení.

    Dokumentácia ES6 je rozsiahla, ak si prajete veľa čítať, môžete si stiahnuť celé špecifikácie z webovej stránky ECMA International. V tomto príspevku sa pozrieme na 10 vybraných funkcií, hoci ES6 má oveľa viac ponúknuť. Ak chcete experimentovať s tým, ES6 Fiddle je skvelé miesto na to, a môžete tiež nájsť nejaké vzorové úryvky tam.

    Podpora ECMAScript 6

    Dodávatelia prehliadačov postupne pridávajú podporu funkcií ECMAScript 6. Tu nájdete prehľadnú kompatibilnú tabuľku o podpore prehliadačov a kompilátorov pre nové funkcie.

    Ak máte záujem o podporu ES6 v Node.js, pozrite si tu dokumenty.

    Aj keď nie všetky funkcie sú v súčasnosti podporované, môžeme použiť prekladače, ako je Babel, aby sme preniesli náš ES6 kód na ES5. K dispozícii je skvelý plugin Grunt pre Babel, veľa úžasných zásuviek ES6 pre Grunt a úžasný plugin Gulp-Babel, takže našťastie máme veľa možností.

    Týmto spôsobom môžeme začať používať rozšírenú syntax a možnosti, zatiaľ čo sa nemusíte obávať problémov kompatibility. Teraz sa pozrieme na funkcie.

    IMAGE: Github

    1. Nový nechať kľúčové

    ES6 predstavuje nový nechať kľúčové slovo, ktoré nám umožňuje deklarovať lokálne premenné v rámci bloku, ako napríklad vyhlásenie, výraz alebo funkciu (n vnútorné). Napríklad môžeme deklarovať a pre slučka nasledujúcim spôsobom a opätovne použite rovnaký názov premennej (jeho rozsah je obmedzený na pre slučka) v ďalšom ak vyhlásenie:

     pre (let i = 0; i < myArray.length; i++)  // Do something inside the block  if (x > 0 && x! = Y) // Opätovne používame "i" nechať i = x * y

    Použitie nechať kľúčové slovo vedie k čistejšiemu a použiteľnejšiemu kódu. Rozdiel medzi nechať a var je v rozsahu, napríklad lokálna premenná definovaná výrazom var kľúčové slovo sa môže použiť v celej obalovej funkcii, zatiaľ čo premenné definované výrazom nechať pracujú iba v ich vlastnom (sub) bloku. nechať možno tiež použiť globálne, v tomto prípade sa správa rovnakým spôsobom ako var. Samozrejme, v ES6 môžeme stále používať var ak chceme.

    2. Nové const kľúčové

    Nové const kľúčové slovo umožňuje deklarovať konštanty, známe aj ako nemenné premenné, na ktoré nemôžeme neskôr priradiť nový obsah.

     const MY_CONST = 12; console.log (MY_CONST); // 12 MY_CONST = 16; // Tichá chyba, pretože nemôžeme priradiť novú hodnotu na konštantu

    Zmeniteľné premenné nie sú vždy úplne nemeniteľné v ECMAScript 6, hoci, ak konštanta drží objekt, môžeme neskôr zmeniť hodnotu jeho vlastností a metód. To isté platí pre prvky poľa.

     konšt. MY_CONSTANT = myProperty: 6; console.log (MY_CONSTANT.myProperty); // 6 MY_CONSTANT.myProperty = 18; console.log (MY_CONSTANT.myProperty); // 18 const OTHER_CONSTANT = [12, 14, 16]; console.log (OTHER_CONSTANT [0]); // 12 OTHER_CONSTANT [0] = 22; console.log (OTHER_CONSTANT [0]); 22

    Stále nemôžeme priamo priradiť novú hodnotu objektu MY_CONSTANT vo vyššie uvedenom útržku kódu, čo znamená, že nemôžeme zmeniť mená vlastností a metód a tiež nemôžeme pridať nový alebo odstrániť existujúci, takže nemôžeme urobiť nasledujúca vec:

     MY_CONSTANT = newProperty: 18; console.log (MY_CONSTANT.newProperty); // chyba

    3. Šípové funkcie

    ECMAScript 6 uľahčuje, ako píšeme anonymných funkcií, ako to môžeme úplne vynechať funkcie kľúčových slov. Stačí len použiť novú syntax pre funkcie šípky, pomenovaná po znamení šípky =>, ktorá nám poskytuje skvelú skratku.

     // 1. Jeden parameter v ES6 let sum = (a, b) => a + b; // v ES5 var sum = funkcia (a, b) return a + b; ; // 2. Bez parametrov v ES6 nechajte randomNum = () => Math.random (); // v ES5 var randomNum = funkcia () return Math.random (); ; // 3. bez návratu v ES6 nechajte message = (name) => alert ("Hi" + name + "!"); // v ES5 var message = funkcia (yourName) alert ("Hi" + yourName + "!"); ;

    Je tu dôležitý rozdiel medzi bežnými a šípovými funkciami, tj šípovými funkciami, ktoré nedostávajú toto hodnota automaticky definovaná ako funkcie definované pomocou funkcie kľúčové slovo urobiť. Šípové funkcie lexikálne viazať toto hodnoty v súčasnom rozsahu. To znamená, že môžeme ľahko znovu použiť toto kľúčové slovo vo vnútornej funkcii. V ES5 je možné len s nasledujúcim hackom:

     // ES5 Použite kľúčové slovo "toto" vo vnútornej funkcii ... addAll: funkcia addAll (pieces) var self = this; _.each (kusy, funkcia (kus) self.add (kus);); , ... // ES6 rovnaká vnútorná funkcia teraz môže používať vlastnú "túto" ... addAll: funkcia addAll (kusy) _.each (kusy, kus => tento.add (kus)); , ...

    Kód vyššie je z Mozilla Hacks

    4. Nové nátierka operátor

    Nové nátierka operátor je označený 3 bodmi (...) a môžeme ho použiť na podpísanie miesta viacerých očakávaných položiek. Jedným z najčastejších prípadov použitia operátora šírenia je vloženie prvkov poľa do iného poľa:

     Nech je myArray = [1, 2, 3]; let newArray = [... myArray, 4, 5, 6]; console.log (newArray); // 1, 2, 3, 4, 5, 6 

    Môžeme tiež využiť pákový efekt nátierka operátor vo funkčných volaniach, v ktorom chceme preniesť argumenty z poľa:

     Nech je myArray = [1, 2, 3]; funkčná suma (a, b, c) vrátiť a + b + c;  console.log (suma (... myArray)); 6

    nátierka operátor je pomerne flexibilný, pretože môže byť použitý viackrát v rovnakom volaní poľa alebo funkcie.

    5. Predvolené hodnoty pre parametre a nové parametre odpočinku

    Dobrá správa, že v ECMAScript 6 môžeme pridať predvolené hodnoty parametrom funkcie. To znamená, že ak neskončíme argumenty neskôr vo funkčnom volaní, budú použité predvolené parametre. V ES5 sú predvolené hodnoty parametrov vždy nastavené na nedefinovaný, takže nová možnosť ich nastavenia na čokoľvek, čo chceme, je určite skvelým rozšírením jazyka.

     súčet funkcií (a = 2, b = 4) return a + b;  konsole.log (suma ()); // 6 console.log (súčet (3, 6)); 9

    ES6 tiež zavádza nový druh parametra, odpočinku. Vyzerajú a pracujú podobne ako pri šírení operátorov. Prichádzajú užitočnými, ak nevieme, koľko argumentov prebehne neskôr vo funkčnom volaní. Môžeme použiť vlastnosti a metódy objektu Array na parametre odpočinku:

     funkcia putInAlphabet (... args) nechal tried = args.sort (); návrat triedený;  console.log (putInAlphabet ("e", "c", "m", "a", "s", "c", "r", "i", "p", "t")); // a, c, c, e, i, m, p, r, s, t

    6. Nové pre ... z výkaz

    Pomocou nového pre ... z smyčka môžeme iterovať cez pole alebo iné iterovateľné objekty ľahko. Spolu s novým pre ... z ECMAScript 6 zavádza dva nové iteračné objekty, mapu pre mapy kľúčov / hodnôt a nastavenie pre zbierky jedinečných hodnôt, ktoré môžu byť aj primitívne hodnoty a referencie objektov. Keď používame pre ... z vyhlásenie, kód vnútri bloku sa vykoná pre každý prvok iterovateľného objektu.

     Nech je myArray = [1, 2, 3, 4, 5]; let suma = 0; pre (let i myArray) sum + = i;  konsole.log (súčet); // 15 (= 1 + 2 + 3 + 4 + 5)

    7. Šablóny literálov

    ECMAScript 6 nám poskytuje novú alternatívu pre zlučovanie reťazcov. Šablóny literálov dovoľte nám jednoducho vytvárať šablóny, v ktorých môžeme vložiť rôzne hodnoty do akéhokoľvek miesta, ktoré chceme. Aby sme tak urobili, musíme použiť $ ... syntax všade tam, kde chceme vložiť dáta, ktoré môžeme preniesť z premenných, polí alebo objektov nasledujúcim spôsobom:

     let zákazník = titul: "Ms", meno: "Jane", priezvisko: "Doe", vek: "34 '; let šablóna = 'Drahý $ zákazník.title $ zákazník.firstname $ zákazník.zoznam! Happy $ customer.age narodeniny! '; console.log (šablóny); // Milá pani Jane Doeová! Šťastné 34. narodeniny!

    8. Triedy

    ES6 zavádza triedy JavaScript, ktoré sú postavené na existujúcej dedičnosti založenej na prototype. Nová syntax umožňuje jednoduchšie vytvárať objekty, využívať dedičnosť a opätovne používať kód. Rovnako to uľahčí pre začiatočníkov, ktorí prichádzajú z iných programovacích jazykov, aby pochopili, ako funguje jazyk JavaScript.

    V triede ES6 sú deklarované nové trieda kľúčové slovo a potrebujete mať konštruktor () metóda, ktorá sa nazýva pri inštancii nového objektu pomocou new myClass () syntax. Je tiež možné rozšíriť nové triedy s trieda Dieťa rozširuje rodič syntax, ktorý môže byť známy z iných objektovo orientovaných jazykov, ako napríklad PHP. Je tiež dôležité vedieť, že na rozdiel od deklarácií o funkciách a premenných sa trieda deklarácií NEMÁ VYHRADENÁ v ECMAScript 6.

     class Polygon konštruktor (výška, šírka) // konštruktor triedy this.name = 'Polygon'; this.height = height; this.width = width;  sayName () // class metóda console.log ('Ahoj, ja som', toto.meno + '.');  let myPolygon = nová polygón (5, 6); console.log (myPolygon.sayName ()); Ahoj, som polygon.

    Kód vyššie z príkladov ES6 Fiddle, .

    9. Moduly

    Už ste niekedy premýšľali o tom, ako by bolo cool, ak by bol JavaScript modulárny? Samozrejme, existovali riešenia ako CommonJS (používané v Node.js) alebo AMD (Asynchronous Module Definition) (používané v RequireJS), aby to urobili predtým, ale ES6 zavádza moduly ako natívnu funkciu.

    Musíme definovať každý modul vo vlastnom súbore a potom použiť export kľúčové slovo na export premenných a funkcií na ostatné súbory a súbor import kľúčové slovo na importovanie z ostatné súbory podľa nasledujúcej syntaxe:

     // Funkcia funkcia.js kocka (a) return a * a * a;  funkcia cubeRoot (a) return Math.cbrt (a);  export cube, cubeRoot // alebo: export cube ako cb, cubeRoot ako cr // app.js import cube, cubeRoot z 'functions'; console.log (kocky (4)); // 64 konsole.log (cubeRoot (125)); 5

    Toto riešenie je skvelé, pretože kód uložený v module je zvonka neviditeľný a potrebujeme exportovať iba časť, ktorú chceme dostať do iných súborov. Môžeme robiť oveľa úžasnejšie veci s modulmi ES6, tu nájdete skvelé a podrobné vysvetlenie o nich.

    10. Náboje nových metód

    ECMAScript 6 zavádza mnoho nových metód pre existujúce String Prototype, Array Object, Array Prototype a Math Object. Nové metódy môžu výrazne zlepšiť spôsob, ako môžeme manipulovať s týmito entitami. Mozilla Dev má skvelé kódexové príklady nových doplnkov, stojí za to vziať čas a dôkladne ich preskúmať.

    Len aby som ukázal, aké sú v pohode, tu je moja najobľúbenejšia metóda hľadania prototypu Array, ktorá nám umožňuje testovať určité kritériá na prvkoch poľa spúšťaním funkcie spätného volania na každom prvku a potom vrátiť prvý prvok, ktorý výnos pravdivý.

     funkcia isPrime (element, index, array) var start = 2; zatiaľ čo (štart <= Math.sqrt(element))  if (element % start++ < 1)  return false;   return element > 1;  console.log ([4, 6, 8, 12] .find (isPrime)); // undefined, nenašiel console.log ([4, 5, 8, 12] .find (isPrime)); 5

    Kód vyššie z: Mozilla Dev