Catégories
JavaScript

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 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

Liens

github.com/lukehoban/es6features

Learn ES2015 Babel