La dernière version de JavaScript n'a que 2 nouvelles fonctionnalités. Voici comment ils fonctionnent.

Parlons de la dernière version de JavaScript: ECMAScript 2016 (plus communément appelée ES7). ES7 apporte deux nouvelles fonctionnalités: Array.prototype.includes()et le nouvel opérateur exponentielle: **.

Array.prototype.includes ()

Il est révolu le temps où nous .indexOf()savions si un élément existait dans un tableau.

Le mot clé est «exister».

.indexOf() c'est bien si nous voulons savoir à quel index un élément donné apparaît.

Mais si notre objectif est de savoir si un élément donné existe dans un tableau, ce .indexOf()n'est pas la meilleure option. Et la raison est simple: lorsque nous interrogeons l'existence de quelque chose, nous attendons une valeur booléenne, pas un nombre .

Array.prototype.includes()fait exactement cela. Il détermine si un élément donné existe dans un tableau, retournant trues'il existe , falsesinon.

Dans la spécification

Array.prototype.includes ( searchElement [ , fromIndex ] )
  • searchElement - l'élément à rechercher.
  • fromIndex(facultatif) - l'index à partir duquel commencer la recherche.

Plonger dans le cahier des charges ressemble à la recherche de puissance.

La spécification dit:

Allons étape par étape et essayons de comprendre la spécification avec des exemples.

  1. La différence ici est la position de l'élément 4. Comme notre premier exemple place 4 à la dernière position, includes recherchera tout le tableau. Par spécification .includes()revient immédiatement après avoir trouvé le fichier searchElement. Cela rend notre deuxième opération beaucoup plus rapide.
  2. La grande différence entre l'algorithme SameValueZero et la Strict Equality Comparison (utilisée par .indexOf()) est qu'il permet de détecter les éléments NaN .
  3. Il renvoie le booléen truelorsque l'élément est trouvé et falsesinon. Plus d'index en conséquence?
  4. Contrairement à .indexOf(), .includes()ne saute pas les éléments de tableau manquants. Au lieu de cela, il les traite comme des valeurs non définies .

Commencez-vous à ressentir le pouvoir?

Nous n'avons même pas touché fromIndex.

Vérifions la spécification:

Le deuxième argument facultatif fromIndexest par défaut 0(c'est- à -dire que tout le tableau est recherché). S'il est supérieur ou égal à la longueur du tableau, false est renvoyé, c'est-à-dire que le tableau ne sera pas recherché. S'il est négatif, il est utilisé comme décalage à partir de la fin du tableau à calculer fromIndex. Si l'index calculé est inférieur à 0, le tableau entier sera recherché.
  1. Si aucun fromIndexn'est fourni, la valeur par défaut de 0est prise et le tableau entier est recherché.
  2. .includes()renvoie immédiatement false lorsque la valeur de fromIndexest supérieure à la longueur du tableau.
  3. Quand fromIndexest négatif, alors sa valeur est calculée comme array.length — fromIndex. Ceci est particulièrement utile lors de la recherche sur les derniers éléments. Par exemple, cela fromIndex = -5revient à rechercher les 5 derniers éléments.
  4. Pour éviter .includes()de rompre lorsque la fromIndexvaleur calculée est inférieure à 0, le tableau entier est recherché. Je préfère casser?

OK - une dernière nouvelle fonctionnalité…

The Exponential Operator (**)

Nous avons attendu le jour où nous pouvons jouer avec exponentielles nombres comme nous jouons avec l'addition, la soustraction, la multiplication, la division.

Eh bien, ce jour est là.

L'opérateur **se comporte exactement de la même manière que Math.pow(). Il renvoie le résultat de l'élévation du premier opérande à la puissance du second (par exemple x ** y).

C'est ça!

Vous avez maintenant la puissance d' ES7 ! Utilisez-le bien!

Grâce à ?

  • 2ality.com par Axel Rauschmayer
  • Spécification du langage ECMAScript® 2016
  • À tous les fans de He-Man
  • freeCodeCamp pour la publication ❤️

N'oubliez pas de consulter mes articles sur ES6:

Explorons les générateurs ES6

Generators, aka, une implémentation d'itérables. medium.freecodecamp.org Oh oui! Asynchrone / Attendre

async / await est la nouvelle syntaxe JavaScript pour déclarer une fonction asynchrone. medium.freecodecamp.org