Innledning

ECMAScript 6, også kjent som ECMAScript 2015, er den nyeste versjonen av ECMAScript standard. ES6 er en større oppdatering til språket, og den første oppdateringen til det språket siden ES5 ble standardisert i 2009. Gjennomføringen av disse har i stor JavaScript motorer som er i gang nå.

Se ES6 standard for full spesifikasjon av ECMAScript 6 språk.,

ES6 inneholder følgende nye funksjoner:

  • piler
  • klasser
  • forbedret objekt verdiane
  • mal strenger
  • destructuring
  • standard + resten + spre
  • la + const
  • iterators + for..,av
  • generatorer
  • unicode
  • moduler
  • modulen lastere
  • kart + set + weakmap + weakset
  • proxyer
  • symboler
  • subclassable innebygde moduler
  • løfter
  • matematikk + antall + string + antenne + objektet Api
  • binære og oktale verdiane
  • reflektere api
  • halen anrop

ECMAScript 6 Funksjoner

Piler

Pilene er en funksjon skriftspråk ved å bruke => syntaks. De er syntaktisk lignende til beslektet funksjon i C#, Java 8 og CoffeeScript., De støtter både uttalelse blokkere organer så vel som uttrykk organer som returnerer verdien av uttrykket. I motsetning til funksjoner, piler dele samme leksikalske this som deres omkringliggende kode.

Mer info: MDN Pil Funksjoner

Klasser

ES6 klasser er en enkel sukker over prototype-basert OO mønster. Ha en single praktisk fortellende form gjør klasse mønstre enklere å bruke, og oppfordrer interoperabilitet. Klasser støtte prototype-basert arv, super samtaler, forekomst og statiske metoder og konstruktører.,

Mer info: MDN Klasser

Forbedret Objekt Verdiane

Objekt verdiane er utvidet til å støtte innstillingen prototypen på konstruksjon, en forkortelse for foo: foo oppgaver, definere metoder, noe som gjør super samtaler, og computing eiendom navn med uttrykk. Til sammen har disse også bringe objektet verdiane og klasse erklæringer tettere sammen, og la objekt-basert design dra nytte av noen av de samme fasilitetene.,

Mer info: MDN Grammatikk og-typer: Objekt verdiane

Mal Strenger

Mal strenger gi syntaktisk sukker for å bygge strenger. Dette er tilsvarende streng interpolering har i Perl, Python og mer. Alternativt, en tag kan være lagt til for å tillate strengen konstruksjon for å tilpasses, unngå injeksjon angrep eller bygge høyere nivå data strukturer fra string innhold.

Mer info: MDN Mal Strenger

Destructuring

Destructuring lar bindende bruker pattern matching, med støtte for matching av matriser og objekter., Destructuring er fail-myk, lik standard objekt oppslag foo, produsere undefined verdier når de ikke er funnet.

Mer info: MDN Destructuring oppdraget

Standard + Resten + Spre

Callee-evaluert standard parameterverdier. Slå en matrise i fortløpende argumenter i en funksjon samtale. Binder de etterfølgende parameterne til en matrise. Resten erstatter behovet for arguments og adresser vanlige tilfeller mer direkte.,

function f(x, y=12) { // y is 12 if not passed (or passed as undefined) return x + y;}f(3) == 15
function f(x, ...y) { // y is an Array return x * y.length;}f(3, "hello", true) == 6
function f(x, y, z) { return x + y + z;}// Pass each elem of array as argumentf(...) == 6

More MDN info: Default parameters, Rest parameters, Spread Operator

Let + Const

Block-scoped binding constructs. let is the new var. const is single-assignment. Static restrictions prevent use before assignment.

function f() { { let x; { // okay, block scoped name const x = "sneaky"; // error, const x = "foo"; } // error, already declared in block let x = "inner"; }}

More MDN info: let statement, const statement

Iterators + For..,Av

Iterator objekter aktiver tilpasset utgave som CLR IEnumerable eller Java Iterable. Generalisere for..in custom iterator-basert iterasjon med for..of. Krever ikke at du å realisere en array, slik at lat design mønstre som LINQ.

Iterasjon er basert på disse duck-skrevet grensesnitt (med maskinskrevet kopi type syntaks for exposition bare):

Mer info: MDN for…av

Generatorer

Generatorer forenkle iterator-redigering ved hjelp av function* og yield., En funksjon erklært som funksjon* returnerer en Generator eksempel. Generatorer er undertyper av iterators som inkluderer ytterligere next og throw. Disse gjør det mulig verdier til å strømme tilbake i generator, så yield er et uttrykk form som returnerer en verdi (eller kaster).

Merk: det Kan også brukes til å aktivere ‘venter» -lignende asynkron programmering, se også ES7 await forslaget.,

Den generator grensesnittet er (med maskinskrevet kopi type syntaks for exposition bare):

interface Generator extends Iterator { next(value?: any): IteratorResult; throw(exception: any);}

Mer info: MDN Iterasjon protokoller

Unicode

Non-breaking tillegg til å støtte full Unicode, inkludert nye Unicode-bokstavelig form i strenger og nye RegExp u modus for å håndtere kode poeng, så vel som nye Api-er for å behandle strenger på 21bit kode poeng nivå. Disse tilleggene støtte for å bygge globale programmer i JavaScript.

Mer info: MDN RegExp.prototype.,unicode

Moduler

Språk-nivå støtte for moduler for komponent definisjon. Codifies mønstre fra populære JavaScript modul lastere (AMD, CommonJS). Runtime atferd som er definert av en vert definert standard loader. Implisitt asynkron modell – ingen-kode kjører til forespurt modulene er tilgjengelige, og behandles.,v>

Noen andre funksjoner inkluderer export default og export *:

// lib/mathplusplus.jsexport * from "lib/math";export var e = 2.71828182846;export default function(x) { return Math.log(x);}
// app.jsimport ln, {pi, e} from "lib/mathplusplus";alert("2π = " + ln(e)*pi*2);

Mer MDN info: import uttalelse, eksport uttalelse

– Modul Lastere

Modulen lastere støtte:

  • Dynamisk lasting
  • State isolasjon
  • Globale navnerommet isolasjon
  • Utarbeidelse kroker
  • Nestede virtualisering

standard module loader kan konfigureres, og nye magasiner, som kan være konstruert for å evaluere og legg inn koden i isolerte eller begrenset sammenhenger.,

Kart + Set + WeakMap + WeakSet

Effektiv data strukturer for vanlige algoritmer. WeakMaps gir lekkasjefri objekt-tasten vil side tabeller.

Mer MDN info: Kart, Angi, WeakMap, WeakSet

Proxyer

Proxy gjør det mulig å lage objekter med hele spekteret av atferd som er tilgjengelig til å være vert for objekter. Kan brukes for avskjæring, objekt virtualisering, logging/profilering, etc.

Det er feller som er tilgjengelig for alle runtime-nivå meta-operasjoner:

Mer info: MDN Proxy

– Symboler

Symboler aktivere access control for objekt-tilstand., Symboler tillate egenskaper til å være skrevet av enten string (som i ES5) eller symbol. Symboler er en ny primitive typen. Valgfritt description parameter som brukes i feilsøking – men er ikke en del av identiteten. Symboler som er unike (som gensym), men ikke privat, siden de er utsatt via refleksjon funksjoner som Object.getOwnPropertySymbols.

Mer info: MDN Symbol

Subclassable Innebygde moduler

I ES6, innebygde moduler som Array, Date og DOM Elements kan være subclassed.,

Objekt konstruksjon for en funksjon som heter Ctor bruker nå to faser (både praktisk talt utsendt):

  • Ring Ctor for å fordele objekt, installere noen spesiell atferd
  • Påberope constructor på nytt eksempel å initialisere

Det kjent @@create symbolet er tilgjengelig via Symbol.create. Innebygde moduler nå avsløre deres @@create eksplisitt.,

Matematikk + Antall + String + Antenne + Objekt Api

Mange nye biblioteket tillegg, inkludert core Matematikk biblioteker, Array konvertering hjelpere, String hjelpere, og Objekt.tilordne for kopiering.

Mer MDN info: Antall, Matematikk, Array.fra Tabellen.av Tabellen.prototype.copyWithin, Objekt.tilordne

Binære og Oktale Verdiane

To nye numeriske bokstavelig skjemaer er lagt for binære (b) og oktale (o).

0b111110111 === 503 // true0o767 === 503 // true

Løfter

Løfter er et bibliotek for asynkron programmering., Løfter er et førsteklasses eksempel på en verdi som kan gjøres tilgjengelig i fremtiden. Lover er brukt i mange eksisterende JavaScript-biblioteker.

Mer info: MDN Løfte

Reflektere API

Full refleksjon API å utsette runtime-nivå meta-operasjoner på objektene. Dette er i praksis den inverse av Proxy-API, og gjør det mulig å ringe tilsvarer samme meta-operasjoner som proxy-feller. Spesielt nyttig for implementering av proxyer.,

// No sample yet

Mer info: MDN Reflektere

Halen Anrop

Anrop i halen-posisjon er garantert å ikke vokse stabelen unboundedly. Gjør rekursive algoritmer trygg i møte med ubegrenset innganger.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *