introduktion

ECMAScript 6, Även känd som ECMAScript 2015, är den senaste versionen av ECMAScript-standarden. ES6 är en betydande uppdatering av språket, och den första uppdateringen av språket sedan ES5 standardiserades 2009. Genomförandet av dessa funktioner i stora JavaScript-motorer pågår nu.

Se ES6 standarden för full specifikation av ECMAScript 6 språk.,

ES6 innehåller följande nya funktioner:

  • pilar
  • klasser
  • förbättrade objekt literals
  • mallsträngar
  • destructuring
  • standard + rest + spread
  • let + const
  • iterators + för..,
  • generatorer
  • unicode
  • moduler
  • modul lastare
  • karta + set + weakmap + weakset
  • proxies
  • symboler
  • subclassable built-ins
  • löften
  • math + number + string + array + object APIs
  • binära och oktala Literaler
  • reflektera API
  • svans samtal

ECMAScript 6 funktioner

pilar

pilar är en funktion stenografi med hjälp av => syntax. De är syntaktiskt liknar den relaterade funktionen i C#, Java 8 och CoffeeScript., De stöder både uttalande block organ samt uttryck organ som returnerar värdet av uttrycket. Till skillnad från funktioner delar pilar samma lexikala this som deras omgivande kod.

Mer info: MDN Pilfunktioner

klasser

ES6 klasser är ett enkelt socker över prototypbaserade OO mönster. Att ha en enda bekväm deklarativ form gör klassmönster lättare att använda och uppmuntrar driftskompatibilitet. Klasser stöder prototypbaserad arv, supersamtal, instans och statiska metoder och konstruktörer.,

Mer info: MDN-klasser

förbättrade Objektliteraler

Objektliteraler utökas för att stödja att ställa in prototypen vid konstruktion, stenografi förfoo: foo uppdrag, definiera metoder, göra supersamtal och beräkna egendomsnamn med uttryck. Tillsammans för dessa också objektkompetenser och klassdeklarationer närmare varandra, och låt objektbaserad design dra nytta av några av samma bekvämligheter.,

Mer info: MDN grammatik och typer: Objektliteraler

Mallsträngar

Mallsträngar ger syntaktiskt socker för att konstruera strängar. Detta liknar sträng interpolation funktioner i Perl, Python och mer. Eventuellt kan en tagg läggas till så att strängkonstruktionen kan anpassas, undvika injektionsattacker eller konstruera datastrukturer på högre nivå från stränginnehåll.

Mer info: MDN Template Strings

Destructuring

Destructuring tillåter bindning med mönstermatchning, med stöd för matchande arrayer och objekt., Destructuring är fail-soft, liknar standardobjektet lookup foo, producerar undefined värden när den inte hittas.

Mer info: MDN Destructuring assignment

standard + Rest + Spread

callee-evaluerade standardparametervärden. Förvandla en array till på varandra följande argument i ett funktionssamtal. Binda efterföljande parametrar till en array. Rest ersätter behovet av arguments och adresserar vanliga fall mer direkt.,

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 objekt aktivera anpassad iteration som CLR IEnumerable eller Java Iterable. Generalisera for..in till anpassad iteratorbaserad iteration med for..of. Behöver inte inse en array, vilket möjliggör lata designmönster som LINQ.

Iteration baseras på dessa duck-typade gränssnitt (med TypeScript typ syntax för exposition endast):

Mer info: MDN för…

generatorer

generatorer förenklar iterator-författande medfunction* ochyield., En funktion som deklareras som funktion * returnerar en Generatorinstans. Generatorer är undertyper av iteratorer som inkluderar ytterligare next och throw. Dessa aktiverar värden för att strömma tillbaka till generatorn, så yield är ett uttrycksformulär som returnerar ett värde (eller kastar).

Obs: kan också användas för att aktivera ”väntar” -liknande async programmering, se även ES7await förslag.,

generatorgränssnittet är (med TypeScript-typsyntax endast för exposition):

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

Mer info: MDN Iterationsprotokoll

Unicode

icke-bryta tillägg för att stödja fullständig Unicode, inklusive ny Unicode bokstavlig form i strängar och ny RegExp u läge för att hantera Kodpunkter, samt nya API: er för att bearbeta strängar på 21bit-kodpoängsnivå. Dessa tillägg stöder att bygga globala appar i JavaScript.

Mer info: MDN RegExp.prototypstadiet.,unicode

moduler

stöd på språknivå för moduler för komponentdefinition. Kodifierar mönster från populära JavaScript modul lastare (AMD, CommonJS). Körtidsbeteende definierat av en värddefinierad standardlastare. Implicit async model-ingen kod körs tills begärda moduler är tillgängliga och behandlas.,v>

några ytterligare funktioner inkluderar export default och 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 uttalande, export uttalande

modul lastare

modul lastare stöd:

  • dynamisk lastning
  • statlig isolering
  • Global namespace isolation
  • kompilering krokar
  • kapslade virtualisering

standardmodulen lastaren kan konfigureras, och nya lastare kan konstrueras för att utvärdera och ladda kod i isolerade eller begränsade sammanhang.,

Map + Set + WeakMap + WeakSet

effektiva datastrukturer för vanliga algoritmer. WeakMaps ger läckagefria objektnyckel ’ d sidobord.

Mer MDN info: karta, Set, WeakMap, WeakSet

Proxies

Proxies möjliggör skapandet av objekt med hela skalan av beteenden som är tillgängliga för värd objekt. Kan användas för avlyssning, objektvirtualisering, loggning/profilering etc.

det finns fällor tillgängliga för alla metaoperationer på runtime-nivå:

Mer info: MDN Proxy

symboler

symboler aktiverar åtkomstkontroll för objekttillstånd., Symboler tillåter att egenskaper aktiveras av antingen string(som i ES5) eller symbol. Symboler är en ny primitiv typ. Valfrittdescription parameter som används vid felsökning-men ingår inte i identiteten. Symboler är unika (som gensym), men inte privata eftersom de exponeras via reflektionsfunktioner som Object.getOwnPropertySymbols.

Mer info: MDN-Symbol

Underklassable Built-ins

i ES6, inbyggda somArray,Date och DOMElements kan underklassas.,

Objektkonstruktion för en funktion som heterCtor använder nu två faser (båda praktiskt taget skickade):

  • RingCtor för att allokera objektet, installera något speciellt beteende
  • anropa konstruktören på ny instans för att initiera

den kända@@create symbolen är tillgänglig viaSymbol.create. Inbyggda exponerar nu sina@@create explicit.,

Math + Number + String + Array + Object API: er

många nya bibliotekstillägg, inklusive grundläggande matematiska bibliotek, Array conversion helpers, String helpers och Object.tilldela för kopiering.

Mer MDN info: Antal, Matematik, Array.från Matrisen.av Matrisen.prototypstadiet.copyWithin, objekt.tilldela

binära och oktala Literaler

två nya numeriska bokstavliga former läggs till för binära (b) och oktala (o).

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

löften

löften är ett bibliotek för asynkron programmering., Löften är en förstklassig representation av ett värde som kan göras tillgängligt i framtiden. Löften används i många befintliga JavaScript-bibliotek.

Mer info: MDN Promise

reflektera API

fullständig reflektion API utsätta runtime-nivå metaoperationer på objekt. Detta är effektivt inversen av Proxy API, och gör det möjligt att ringa samtal som motsvarar samma meta-operationer som proxy fällor. Särskilt användbart för att genomföra proxies.,

// No sample yet

Mer info: MDN reflekterar

Tail Calls

samtal i tail-position garanteras inte växa stapeln obundet. Gör rekursiva algoritmer säkra inför obundet ingångar.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *