Introduction

ECMAScript 6, également connu sous le nom D’ECMAScript 2015, est la dernière version du standard ECMAScript. ES6 est une mise à jour importante de la langue, et la première mise à jour de la langue depuis ES5 a été normalisé en 2009. La mise en œuvre de ces fonctionnalités dans les principaux moteurs JavaScript est en cours.

Voir la norme ES6 pour la spécification complète du langage ECMAScript 6.,

ES6 inclut les nouvelles fonctionnalités suivantes:

  • flèches
  • classes
  • une amélioration de la littéraux d’objet
  • modèle de chaînes de caractères
  • déstructuration
  • par défaut + repos + spread
  • laissez – + const
  • les itérateurs + pour..,de
  • générateurs
  • unicode
  • modules
  • Chargeurs de modules
  • carte + set + weakmap + weakset
  • proxies
  • symboles
  • éléments intégrés sous-classables
  • promesses
  • mathématiques + nombre + chaîne + tableau + objet API
  • littéraux binaires et octaux
  • reflect API
  • tail calls

ECMAScript 6 features

arrows

les flèches sont un raccourci de fonction utilisant la syntaxe =>. Ils sont syntaxiquement similaires à la fonctionnalité associée en C#, Java 8 et CoffeeScript., Ils prennent en charge les corps de bloc d’instructions ainsi que les corps d’expression qui renvoient la valeur de l’expression. Contrairement aux fonctions, les flèches partagent le même this lexical que leur code environnant.

Plus d’informations: MDN Arrow Functions

Classes

Les classes ES6 sont un simple sucre sur le modèle oo basé sur un prototype. Avoir un seul formulaire déclaratif pratique rend les modèles de classe plus faciles à utiliser et encourage l’interopérabilité. Les Classes prennent en charge l’héritage basé sur des prototypes, les super appels, les méthodes et constructeurs d’instance et statiques.,

Plus d’informations: classes MDN

littéraux D’objet améliorés

Les littéraux D’objet sont étendus pour prendre en charge la définition du prototype lors de la construction, la sténographie pour les affectationsfoo: foo, la définition de méthodes, l’exécution de super appels et le calcul Ensemble, ceux-ci rapprochent également les littéraux d’objets et les déclarations de classes, et permettent à la conception basée sur des objets de bénéficier de certaines des mêmes commodités.,

Plus d’infos: Mdn Grammar and types: Object literals

Template Strings

Les Template strings fournissent du sucre syntaxique pour la construction de chaînes. Ceci est similaire aux fonctionnalités d’interpolation de chaîne dans Perl, Python et plus encore. En option, une balise peut être ajoutée pour permettre de personnaliser la construction de la chaîne, en évitant les attaques par injection ou en construisant des structures de données de niveau supérieur à partir du contenu de la chaîne.

Plus d’informations: MDN Template Strings

déstructuration

la déstructuration permet la liaison en utilisant la correspondance de motifs, avec la prise en charge de la correspondance des tableaux et des objets., La déstructuration est souple, similaire à la recherche d’objet standard foo, produisant des valeurs undefined lorsqu’elle n’est pas trouvée.

Plus d’informations: affectation de déstructuration MDN

Default + Rest + Spread

appelé-valeurs de paramètre par défaut évaluées. Transformez un tableau en arguments consécutifs dans un appel de fonction. Lier les paramètres de fin à un tableau. Rest remplace le besoin de arguments et adresse les cas courants plus directement.,

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..,Des objets itérateurs

permettent une itération personnalisée comme CLR IEnumerable ou Java Iterable. Généralisez for..inà une itération personnalisée basée sur un itérateur avec for..of. Ne nécessite pas de réaliser un tableau, permettant des modèles de conception paresseux comme LINQ.

L’itération est basée sur ces interfaces typées canard (en utilisant la syntaxe de type TypeScript pour l’exposition uniquement):

Plus d’informations: MDN pour…des générateurs

simplifient la création d’itérateurs en utilisantfunction* Etyield., Une fonction déclarée comme function * renvoie une instance de générateur. Les générateurs sont des sous-types d’itérateurs qui comprennent supplémentaires next et throw. Ceux-ci permettent aux valeurs de revenir dans le générateur, donc yield est une forme d’expression qui renvoie une valeur (ou jette).

Remarque: Peut également être utilisé pour activer la programmation asynchrone de type ‘await’, voir aussi la proposition ES7 await.,

l’interface du générateur est (en utilisant la syntaxe de type TypeScript pour l’exposition uniquement):

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

Plus d’informations: protocoles D’itération MDN

Unicode

ajouts Non cassants pour prendre en charge Unicode complet, y compris la nouvelle forme littérale Unicode dans les chaînes et>mode pour gérer les points de code, ainsi que de nouvelles API pour traiter les chaînes au niveau des points de code 21 bits. Ces ajouts prennent en charge la création d’applications globales en JavaScript.

Plus d’informations: MDN RegExp.prototype.,unicode

Modules

prise en charge au niveau de la langue des modules pour la définition des composants. Codifie les modèles à partir de chargeurs de modules JavaScript populaires (AMD, CommonJS). Comportement d’exécution défini par un chargeur par défaut défini par l’hôte. Modèle implicitement asynchrone-aucun code ne s’exécute tant que les modules demandés ne sont pas disponibles et traités.,v>

certaines fonctionnalités supplémentaires incluent export default Et 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);

plus d’informations MDN: déclaration d’importation, déclaration d’exportation

Chargeurs de modules

support des chargeurs de modules:

  • chargement dynamique
  • isolation d’état
  • isolation globale de l’espace de noms
  • crochets de compilation
  • virtualisation imbriquée

le chargeur de modules par défaut peut être configuré, et de contextes contraints.,

Map + Set + WeakMap + WeakSet

structures de données efficaces pour les algorithmes courants. WeakMaps fournit des tables secondaires sans fuite.

Plus D’informations MDN: Map, Set, WeakMap, WeakSet

Proxies

Les Proxies permettent de créer des objets avec toute la gamme de comportements disponibles pour les objets hôtes. Peut être utilisé pour l’interception, la virtualisation d’objets, la journalisation/profilage, etc.

Il existe des pièges disponibles pour toutes les méta-opérations au niveau de l’exécution:

Plus d’informations: proxy MDN

symboles

Les symboles permettent le contrôle d’accès pour l’état de l’objet., Les symboles permettent de saisir les propriétés par string (comme dans ES5) ou symbol. Les symboles sont un nouveau type primitif. Optionneldescription paramètre utilisé dans le débogage – mais ne fait pas partie de l’identité. Les symboles sont uniques (comme gensym), mais pas privés car ils sont exposés via des fonctionnalités de réflexion comme Object.getOwnPropertySymbols.

Plus d’informations: symbole MDN

éléments intégrés sous-classables

dans ES6, les éléments intégrés commeArray,Date et DOMElements peuvent être sous-Classés.,

la construction D’objet pour une fonction nomméeCtor utilise maintenant deux phases (toutes deux virtuellement distribuées):

  • CallCtor pour allouer l’objet, en installant tout comportement spécial
  • Invoke constructeur sur une nouvelle instance pour initialiser

9dee5c7533″> symbole est disponible via Symbol.create. Les éléments intégrés exposent maintenant explicitement leur @@create.,

API Math + Number + String + Array + Object

de nombreux nouveaux ajouts à la bibliothèque, y compris les bibliothèques mathématiques de base, les aides à la conversion de tableaux, les aides à la chaîne et les objets.assigner pour la copie.

plus D’informations MDN: nombre, mathématiques, tableau.depuis, Tableau.de Tableau.prototype.copyWithin, l’Objet.attribuer

Binaires, Octales et Littéraux

Deux nouveaux littéral numérique formes sont ajoutés pour les binaires (b) et octal (o).

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

les Promesses

les Promesses sont une bibliothèque pour la programmation asynchrone., Les promesses sont une représentation de première classe d’une valeur qui peut être rendue disponible à l’avenir. Les promesses sont utilisées dans de nombreuses bibliothèques JavaScript existantes.

Plus d’informations: MDN Promise

Reflect API

Full reflection API exposant les méta-opérations au niveau de l’exécution sur les objets. C’est effectivement l’inverse de L’API Proxy, et permet de faire des appels correspondant aux mêmes méta-opérations que les traps proxy. Particulièrement utile pour implémenter des proxys.,

// No sample yet

Plus d’informations: MDN Reflect

appels de queue

Les appels en position de queue sont garantis pour ne pas développer la pile sans limite. Rend les algorithmes récursifs sûrs face aux entrées illimitées.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *