Javascript ES6
Const & Let
ES6 introduit la notion de "variables immuables", ce sont des variables qui ne peuvent subir d'affectation qu'1 seule fois, à leur création. Par contre on peut bien sur affecter un objet à une constante, et cela n’empêche pas l'objet d’être modifié.
const toto = {} // undefined
toto // Object { }
toto.tata = 1 // 1 car on affecte une nouvelle propriété 'tata' à l'objet sur lequel pointe toto
toto // Object { tata: 1 }
toto = 2 // TypeError: invalid assignment to const `toto`
const toto; // SyntaxError: missing = in const declaration[En savoir plus] debugger eval code:1:6
const toto = 'x'; // SyntaxError: redeclaration of const toto
Le scope des variables déclarés const et let est le bloc (contrairement aux var dont le scope est la fonction), et ne subissent pas de "hoisting"
Paramètres Rest
L'opérateur Rest (les ... qui précèdent un argument dans la signature d'une fonction) interviennent dans la signature des fonctions.
C'est un nouveau "type" de paramètre qui prend tous les arguments restant d'un appel et les mets à disposition dans le scope de la fonction à travers une variable de type tableau. Dans l'exemple suivant "z" est un parmètre rest :
const maFonctionToto = (x, y, ...z) => {
console.log(x, y, z.length);
};
// on défini une fonction, avec le paramètre rest 'z'
maFonctionToto(
111,
"tutu",
"youhoo",
10,
{ login: "behrouze" },
5,
"jeNeSuisQu1Texte"
);
// nous retourne: 111 tutu 5
Opérateur Spread
Spread (= déployer, disperser in english) permet d'éclater un objet ou un tableau, ce qui peut etre utile pour un appel de fonction ou pour recréer un autre tableau. Une variable spread peut également être affectée:
[a, b, ...objetIterable] = [1, 2, 3, 4, 5]; // la console nous indique bien Array(5) [ 1, 2, 3, 4, 5 ]
b; // 2
objetIterable; // Array(3) [ 3, 4, 5 ]
Template Strings
Les templates strings fournissent du sucre syntaxique pour nous éviter de faire des concaténations de chaines et variables à l'ancienne (avec des +
).
Il suffit simplement d'utiliser des `
à la place de "
pour délimiter la chaine de caractères, et d'utiliser ${xxx}
pour substituer les variables (ici xxx
) par leur chaine de caractère résultante :
const message = "Aujourd'hui (" + today + ") il fait " + temperature + "°C";
const message = `Aujourd'hui (${today}) il fait ${temperature} °C`;
Liens
- un résumé clair ECMAScript 6 de Luke Hoban
- Learn ES2015 Babel
- bel ensemble d'articles couvrant ES2016 à ES2021 de Carlos Caballero sur dev.to