Indledning

ECMAScript 6, også kendt som ECMAScript 2015, er den nyeste version af ECMAScript standard. ES6 er en væsentlig opdatering til sproget, og den første opdatering til sproget siden ES5 blev standardiseret i 2009. Implementering af disse funktioner i større JavaScript-motorer er i gang nu.

se ES6-standarden for fuld specifikation af ECMAScript 6-sproget.,

ES6 indeholder følgende nye funktioner:

  • pilene
  • klasser
  • øget objekt konstanter
  • skabelon strenge
  • destruktureringsdeklaration
  • standard + resten + spredning
  • lad + const
  • iteratorer + for..,af
  • generatorer
  • unicode
  • moduler
  • modul læssemaskiner
  • kort + sæt + weakmap + weakset
  • proxies
  • symbol
  • subclassable bygget-ins
  • løfter
  • matematik + nummer + string + array + objekt-Api ‘
  • binære og oktale konstanter
  • afspejle api
  • hale opkald

ECMAScript 6 Funktioner

Pilene

Pile er en funktion stenografi ved brug af => syntaks. De er syntaktisk ligner den relaterede funktion i C#, Java 8 og CoffeeScript., De understøtter både sætning blok organer samt udtryk organer, der returnerer værdien af udtrykket. I modsætning til funktioner deler pile den samme leksikalske this som deres omgivende kode.

Mere info: MDN Pil Funktioner

Klasser

ES6 klasser er et simpelt sukker over den prototype-baseret OO mønster. At have en enkelt praktisk deklarativ form gør klassemønstre lettere at bruge og tilskynder til interoperabilitet. Klasser understøtter prototype-baserede arv, super opkald, instans og statiske metoder og konstruktører.,

Mere info: MDN Klasser

Øget Objekt Konstanter

Objekt konstanter er udvidet til at støtte indstilling prototypen på byggeri, forkortelse for foo: foo opgaver, der fastlægger metoder, hvilket gør super opkald, og computing ejendom navne med udtryk. Sammen bringer disse også objektlitteraler og klassedeklarationer tættere sammen og lader objektbaseret design drage fordel af nogle af de samme bekvemmeligheder.,

Mere info: MDN grammatik og typer: Object literals

Skabelonstrenge

Skabelonstrenge giver syntaktisk sukker til konstruktion af strenge. Dette svarer til streng interpolation funktioner i Perl, Python og meget mere. Eventuelt kan et tag tilføjes for at tillade streng konstruktion, der skal tilpasses, undgå injektion angreb eller konstruere højere niveau datastrukturer fra streng indhold.

Mere info: MDN Skabelon Strenge

Destruktureringsdeklaration

Destruktureringsdeklaration tillader binding ved hjælp af mønstertilpasning, med støtte til matchende arrays og objekter., Destrukturering er fejlblødt, svarende til standard object lookup foo, der producerer undefined værdier, når de ikke findes.

Mere info: MDN Destructuring assignment

Default + Rest + Spread

Callee-evaluerede standardparameterværdier. Skift et array til fortløbende argumenter i et funktionskald. Bind efterfølgende parametre til et array. Rest erstatter behovet for arguments og behandler almindelige sager mere 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..,Af

iteratorobjekter aktiverer brugerdefineret iteration som CLR IEnumerable eller Java Iterable. Generaliser for..in til brugerdefineret iteratorbaseret iteration med for..of. Kræver ikke at realisere et array, der muliggør dovne designmønstre som Lin..

Iteration er baseret på disse duck-typet grænseflader (ved hjælp af Maskine type syntaks for redegørelsen kun):

Mere info: MDN for…af

Generatorer

Generatorer forenkle iterator-authoring ved hjælp af function* og yield., En funktion erklæret som funktion * returnerer en generator instans. Generatorer er undertyper af iteratorer, som omfatter yderligere next og throw. Disse gør det muligt for værdier at strømme tilbage i generatoren, så yield er en udtryksform, der returnerer en værdi (eller kaster).Bemærk: kan også bruges til at aktivere ‘a awaitait’ – lignende async-programmering, Se også ES7 await forslag.,

generator interface (ved hjælp af Maskine type syntaks for redegørelsen kun):

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

Mere info: MDN Iteration protokoller

Unicode

Non-breaking tilføjelser til støtte for fuld Unicode, herunder nye Unicode bogstavelig form, strygere og new RegExp u mode til at håndtere kode punkter, samt nye Api ‘ er til at behandle strygere i 21bit kode point-niveau. Disse tilføjelser understøtter opbygning af globale apps i JavaScript.

Mere info: MDN Rege .p.prototype.,unicode

moduler

understøttelse af sprogniveau for moduler til komponentdefinition. Kodificerer mønstre fra populære JavaScript-modul læssemaskiner (AMD, CommonJS). Runtime adfærd defineret af en vært-defineret standard loader. Implicit async model – ingen kode udfører indtil ønskede moduler er tilgængelige og behandles.,v>

Nogle yderligere funktioner omfatter 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);

Mere MDN info: import erklæring, eksport erklæring

Modul Læssemaskiner

Modul læssemaskiner støtte:

  • Dynamisk belastning
  • Stat isolation
  • Globale navneområde isolation
  • Udarbejdelse kroge
  • Indlejrede virtualisering

standard module loader kan konfigureres, og nye læssemaskiner kan være konstrueret til at evaluere og til at indlæse kode i isoleret eller begrænset sammenhænge.,

Map + Set + Weakeakmap + Weakeakset

effektive datastrukturer for almindelige algoritmer. Weakeakmaps giver lækage-fri objekt-key ‘ d sideborde.

mere MDN info: kort, sæt, Weakeakmap, Weakeakset

fuldmagter

fuldmagter aktiverer oprettelse af objekter med hele spektret af adfærd til rådighed for at være vært for objekter. Kan bruges til aflytning, objekt virtualisering, logning/profilering, etc.

Der er fælder til rådighed for alle meta-operationer på runtime-niveau:

Mere info: MDN Pro .y

symboler

symboler aktiverer adgangskontrol for objekttilstand., Symboler tillader indtastning af egenskaber ved enten string (som i ES5) eller symbol. Symboler er en ny primitiv type. Valgfridescription parameter, der bruges til fejlfinding – men er ikke en del af identiteten. Symboler er unikke (som gensym), men ikke private, da de udsættes via refleksionsfunktioner som Object.getOwnPropertySymbols.

Mere info: MDN Symbol

Subclassable Bygget-ins

I ES6, bygget-ins som Array Date og DOM Elements kan være delklasser.,

Objekt konstruktion for en funktion med navnet Ctor nu bruger to-faser (både stort set afsendt):

  • Opkald > Ctor for at tildele objektet, installation af eventuelle særlige adfærd
  • Påberåbe sig konstruktør på ny instans til at initialisere

De kendte @@create symbolet er tilgængelige via Symbol.create. Indbyggede ins udsætter nu deres @@create eksplicit.,

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

mange nye bibliotek tilføjelser, herunder core Math biblioteker, Array konvertering hjælpere, String hjælpere, og objekt.Tildel til kopiering.

mere MDN info: nummer, matematik, Array.fra, Array.af, Array.prototype.copyinithin, objekt.tildel

Binære og Oktale Konstanter

To nye numeriske bogstavelig former er tilføjet til binær (b) og oktal (o).

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

løfter

løfter er et bibliotek til asynkron programmering., Løfter er en førsteklasses repræsentation af en værdi, der muligvis stilles til rådighed i fremtiden. Løfter bruges i mange eksisterende JavaScript-biblioteker.

Mere info: MDN løfte

reflektere API

fuld refleksion API udsætter runtime-niveau meta-operationer på objekter. Dette er effektivt den inverse af Pro .y API, og gør det muligt at foretage opkald, der svarer til de samme meta-operationer som pro .y fælder. Især nyttigt til implementering af fuldmagter.,

// No sample yet

Mere info: MDN Afspejler

Hale Opkald

Opkald i tail-position er garanteret ikke vokser stakken unboundedly. Gør rekursive algoritmer sikre i lyset af ubundne indgange.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *