Mājas lapa » Kodēšana » ECMAScript 6 - 10 Awesome New Features

    ECMAScript 6 - 10 Awesome New Features

    Vai zinājāt, ka JavaScript (kopā ar JScript un ActionScript) ir vispārējas nozīmes klientu puses skriptu valodas specifikācija, ko sauc par ECMAScript? Lai padarītu šo šķebinošo definīciju nedaudz pievilcīgāku, varam teikt, ka ECMAScript (vai oficiāli ECMA-262) ir standarts, kas nosaka, kā mēs izmantojam JavaScript, un to, ko mēs varam paveikt ar to.

    Jaunākais, 6. izdevums valodai, ECMAScript 2015 (vai ES6), iespējams, ir visnozīmīgākais atjauninājums kopš pirmās versijas 1997. gadā. Jaunākās versijas galvenais mērķis ir nodrošināt labāku atbalstu, lai izveidotu lielākas lietojumprogrammas un bibliotēkas. Tas nozīmē vairāk nobriedušu sintaksi, jaunus īsceļus, lai atvieglotu kodēšanu, kā arī jaunas metodes, atslēgvārdus, datu tipus un daudzus citus uzlabojumus.

    ES6 dokumentācija ir plaša, ja vēlaties lasīt daudz, jūs varat lejupielādēt visas specifikācijas no ECMA International tīmekļa vietnes. Šajā amatā mēs apskatīsim 10 izvēlētās funkcijas, lai gan ES6 ir daudz ko piedāvāt. Ja vēlaties to izmēģināt, ES6 Fiddle ir lieliska vieta, kur to izdarīt, un jūs varat arī atrast dažus koda fragmenta fragmentus.

    Atbalsts ECMAScript 6

    Pārlūkprogrammas pārdevēji pakāpeniski pievienoja atbalstu ECMAScript 6 funkcijām. Šeit varat atrast atdzist saderības tabulu par pārlūkprogrammu un kompilatoru atbalstu jaunajām funkcijām..

    Ja jūs interesē ES6 atbalsts Node.js, pārbaudiet dokumentus šeit.

    Lai gan ne visas funkcijas pašlaik tiek atbalstītas, mēs varam izmantot transpilatorus, piemēram, Babeli, lai pārraidītu ES6 kodu uz ES5. Babelam ir atdzist Grunt spraudnis, daudzi lieliski ES6 spraudņi Gruntam un pārsteidzošs Gulp-Babel spraudnis, tāpēc par laimi mums ir daudz izvēles.

    Tādā veidā mēs varam sākt izmantot uzlaboto sintaksi un iespējas, bet mums nav jāuztraucas par sarežģītības problēmām. Tagad aplūkosim funkcijas.

    IMAGE: Github

    1. Jauns ļaut Atslēgvārds

    ES6 ievieš jaunu ļaut atslēgvārds, kas ļauj mums deklarēt lokālos mainīgos bloka darbības jomā, piemēram, paziņojumu, izteiksmi vai (n iekšējo) funkciju. Piemēram, mēs varam deklarēt a par cilpa šādā veidā, pēc tam atkārtoti izmanto to pašu mainīgo nosaukumu (jo tā darbības joma ir ierobežota ar par cilpa) ja paziņojums, apgalvojums:

     par (ļaujiet i = 0; i < myArray.length; i++)  // Do something inside the block  if (x > 0 && x! = Y) // Mēs atkārtoti izmantojam "i", lai i = x * y

    Izmantojot ļaut atslēgvārds noved pie tīrāka un izmantojamāka koda. Starpība starp ļaut un var ir ietverts lokālais mainīgais, ko nosaka var atslēgvārdu var izmantot visā norobežojošajā funkcijā, kamēr mainīgie ir definēti ļaut darbojas tikai savā (apakš) blokā. Ļaujiet var izmantot arī visā pasaulē, šajā gadījumā tā darbojas tāpat kā var. Protams, ES6 mēs joprojām varam izmantot var ja mēs vēlamies.

    2. Jauns const Atslēgvārds

    Jauno const atslēgvārds ļauj deklarēt konstantes, kas pazīstamas arī kā nemainīgus mainīgos, kam mēs nevaram piešķirt jaunu saturu vēlāk.

     const MY_CONST = 12; console.log (MY_CONST); // 12 MY_CONST = 16; / / Klusa kļūda, jo mēs nevaram piešķirt jaunu vērtību konstantai

    Tomēr ECMAScript 6 ne vienmēr ir nemainīgi mainīgie, jo, ja konstante satur objektu, mēs vēlāk varam mainīt tā īpašību un metožu vērtību. Tas pats attiecas uz masīva elementiem.

     const 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

    Mēs joprojām nevaram atkārtoti piešķirt jaunu vērtību MY_CONSTANT objektam iepriekš minētajā koda fragmentā, kas nozīmē, ka mēs nevaram mainīt īpašību un metožu nosaukumus, kā arī nevar pievienot jaunu vai dzēst esošo, tāpēc mēs nevaram darīt šāda lieta:

     MY_CONSTANT = newProperty: 18; console.log (MY_CONSTANT.newProperty); // kļūda

    3. Bultas funkcijas

    ECMAScript 6 atvieglo to, kā mēs rakstām anonīmas funkcijas, jo mēs varam pilnīgi izlaist funkciju atslēgvārdu. Mums tikai jāizmanto jaunā sintakse bultiņu funkcijas, nosaukts pēc => bultiņas (tauku bultiņa), kas nodrošina mums lielisku saīsni.

     // 1. Viens parametrs ES6 ļauj summa = (a, b) => a + b; // in ES5 var sum = funkcija (a, b) return a + b; ; // 2. Bez parametriem ES6 ļaut randomNum = () => Math.random (); // in ES5 var randomNum = funkcija () return Math.random (); ; // 3. Bez atgriešanās ES6 ļaujiet ziņu = (nosaukums) => brīdinājums ("Hi" + nosaukums + "!"); // in ES5 var message = function (yourName) brīdinājums ("Hi" + yourName + "!"); ;

    Pastāv būtiska atšķirība starp regulārajām un bultiņu funkcijām, proti, bultiņu funkcijas nesaņem to vērtība automātiski līdzinās funkcijām, kas definētas ar funkciju atslēgvārds dara. Bultas funkcijas leksiski saistās the to vērtību pašreizējai darbības jomai. Tas nozīmē, ka mēs varam viegli atkārtoti izmantot to atslēgvārdu iekšējā funkcijā. ES5 tas ir iespējams tikai ar šādu hack:

     // ES5 Hack izmantot "šo" atslēgvārdu iekšējā funkcijā … addAll: function addAll (gab.) Var self = this; _.izveidot (gabali, funkcija (gabals) self.add (gabals);); ,… // ES6 tā pati iekšējā funkcija tagad var izmantot savu "šo" … addAll: funkcija addAll (gab.) _.Each (gabali, gabals => this.add (gabals)); ,…

    Iepriekš minētais kods ir no Mozilla Hacks

    4. Jauns izplatīties Operators

    Jauno izplatīties operators ir atzīmēts ar 3 punktiem (…), un mēs varam to izmantot, lai parakstītu vairāku sagaidāmo objektu vietu. Viens no izplatītākā operatora visbiežāk lietotajiem gadījumiem ir masīva elementu ievietošana citā blokā:

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

    Mēs varam arī izmantot sviras efektu izplatīties operatoram funkciju zvanos, kuros mēs vēlamies nodot argumentus no masīva:

     let myArray = [1, 2, 3]; funkciju summa (a, b, c) atgriezties a + b + c;  console.log (summa (… myArray)); 6

    The izplatīties operators ir diezgan elastīgs, jo to var izmantot vairākas reizes vienā un tajā pašā masīvā vai funkciju zvanā.

    5. Parametru un jauno atpūtas parametru noklusējuma vērtības

    Labas ziņas, ka ECMAScript 6 varam pievienot noklusējuma vērtības funkcijas parametriem. Tas nozīmē, ka, ja vēlāk neizdosim argumentus funkciju zvans, tiks izmantoti noklusējuma parametri. ES5 parametru noklusējuma vērtības vienmēr ir iestatītas uz nenoteikts, tātad jaunā iespēja tos uzstādīt neatkarīgi no tā, ko mēs vēlamies, ir lielisks valodas uzlabojums.

     funkciju summa (a = 2, b = 4) atgriezties a + b;  console.log (summa ()); // 6 konsole.log (summa (3, 6)); // 9

    ES6 ievieš arī jauna veida parametru atpūtas parametri. Viņi izskatās un strādā līdzīgi izplatītajiem operatoriem. Viņi ir ērti, ja nezinām, cik daudz argumentu tiks nodoti vēlāk funkcijās. Mēs varam izmantot Array objekta īpašības un metodes uz atpūtas parametriem:

     funkcija putInAlphabet (… args) let sorted = args.sort (); atgriezties sakārtoti;  console.log (putInAlphabet ("e", "c", "m", "a", "s", "c", "r", "i", "p", "t")); // a, c, c, e, i, m, p, r, s, t

    6. Jauns par… Paziņojums, apgalvojums

    Ar jaunā palīdzību par… cilpa mēs varam iterēt ar masīviem vai citiem iterable objektiem. Kopā ar jauno par… paziņojums, ECMAScript 6 ievieš arī divus jaunus iterable objektus, kartes atslēgu / vērtību kartēm un iestatiet unikālu vērtību kolekcijām, kas var būt arī primitīvas vērtības un objektu atsauces. Kad mēs izmantojam par… paziņojums, kods bloka iekšienē tiek izpildīts katram iterējamā objekta elementam.

     let myArray = [1, 2, 3, 4, 5]; ļaujiet summa = 0; par (let i no myArray) sum + = i;  console.log (summa); // 15 (= 1 + 2 + 3 + 4 + 5)

    7. Veidnes literārie

    ECMAScript 6 piedāvā jaunu alternatīvu stīgu sakabināšanai. Veidņu literāti ļauj mums viegli izveidot veidnes, kurās mēs varam ievietot dažādas vērtības jebkurai vietai, kuru mēs vēlamies. Lai to izdarītu, mums ir jāizmanto $ … sintakse visur, kur mēs vēlamies ievietot datus, kurus varam nodot no mainīgajiem, blokiem vai objektiem šādā veidā:

     let customer = title: 'Ms', vārds: 'Jane', uzvārds: 'Doe', vecums: '34'; let template = 'Dārgie $ customer.title $ customer.firstname $ customer.surname! Happy $ customer.age dzimšanas diena! ”; console.log (veidne); // Godātais kungs Jane Doe! Labi 34. dzimšanas diena!

    8. Klases

    ES6 iepazīstina ar JavaScript klasēm, kas veidotas, balstoties uz esošo prototipa mantojumu. Jaunā sintakse atvieglo objektu radīšanu, ņemt mantojuma sviras un atkārtoti izmantot kodu. Tas arī atvieglos iesācējiem, kas ierodas no citām programmēšanas valodām, saprast, kā darbojas JavaScript.

    ES6 klasēs tiek deklarētas jaunās klasē atslēgvārdam un nepieciešams konstruktors () metodi, kas tiek saukta, kad jauns objekts tiek parādīts, izmantojot jauns myClass () sintakse. Ir iespējams arī paplašināt jaunas klases klase Bērns paplašina vecāku sintakse, kas var būt pazīstama no citām objektorientētām valodām, piemēram, PHP. Ir svarīgi arī zināt, ka atšķirībā no funkciju un mainīgo deklarāciju klases deklarācijas NAV paceltas ECMAScript 6.

     klase Poligons konstruktors (augstums, platums) // klases konstruktors this.name = 'daudzstūris'; tas ir augstums = augstums; this.width = platums;  sayName () // klases metode console.log ('Sveiki, es esmu a, šis.name +'. ');  let myPolygon = jauns daudzstūris (5, 6); console.log (myPolygon.sayName ()); // Sveiki, es esmu daudzstūris.

    Kods iepriekš no ES6 Fiddle piemēriem, .

    9. Moduļi

    Vai esat kādreiz domājuši par to, cik foršs būtu, ja JavaScript būtu modulāra? Protams, ir bijuši tādi risinājumi kā CommonJS (ko izmanto Node.js) vai AMD (asinhronā moduļa definīcija) (ko izmanto pieprasījumā JS), lai to izdarītu agrāk, bet ES6 ievieš moduļus kā vietējo funkciju.

    Mums ir jādefinē katrs modulis savā failā, pēc tam jāizmanto eksportēt atslēgvārdu, lai eksportētu mainīgos lielumus un funkcijas uz citus failus un importēt lai importētu tos no citi faili, saskaņā ar šādu sintaksi:

     // funkcijas.js funkciju kubs (a) atgriezties * a * a;  funkcija cubeRoot (a) return Math.cbrt (a);  eksportēt cube, cubeRoot // vai: eksportēt kubu kā cb, cubeRoot kā cr // app.js importēt cube, cubeRoot no “funkcijas”; console.log (kubs (4)); // 64 console.log (cubeRoot (125)); 5

    Šis risinājums ir izcils, jo modulī saglabātais kods ir neredzams no ārpuses, un mums ir jāeksportē tikai tā daļa, kuru mēs vēlamies piekļūt citiem failiem. Ar ES6 moduļiem mēs varam darīt daudz pārsteidzošākas lietas, šeit jūs varat atrast lielisku un detalizētu skaidrojumu par tiem.

    10. Jaunas metodes

    ECMAScript 6 ievieš daudzas jaunas metodes esošajai String Prototype, Array Object, Array Prototype un Math Object. Jaunās metodes var ievērojami uzlabot veidu, kā mēs varam manipulēt ar šīm vienībām. Mozilla Dev ir lielisks jauno papildinājumu koda piemērs, ir vērts ņemt laiku un rūpīgi pārbaudīt tos.

    Vienkārši, lai parādītu, cik atdzist tie patiešām ir, šeit ir mans mīļākais: Array prototipa meklēšanas metode, kas ļauj pārbaudīt noteiktus kritērijus masīva elementiem, izpildot atzvanīšanas funkciju katrā elementā, pēc tam atgriežot pirmo elementu, kas atgriežas taisnība.

     funkcija isPrime (elements, indekss, masīvs) var start = 2; kamēr (sāk <= Math.sqrt(element))  if (element % start++ < 1)  return false;   return element > 1;  console.log ([4, 6, 8, 12] .find (isPrime)); // undefined, nav atrasts console.log ([4, 5, 8, 12] .find (isPrime)); 5

    Kods iepriekš: Mozilla Dev