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 et opérateur Spread
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
Spread (= déployer, disperser in english) permet d’éclater 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 Literals ou Template Strings