La versión más reciente de JavaScript solo tiene 2 características nuevas. Así es como funcionan.

Hablemos de la última versión de JavaScript: ECMAScript 2016 (más comúnmente conocido como ES7). ES7 trae dos nuevas características: Array.prototype.includes()y el nuevo operador exponencial: **.

Array.prototype.includes ()

Atrás quedaron los días en los que solíamos .indexOf()saber si un elemento existía en una matriz.

La palabra clave es "existir".

.indexOf() Está bien si queremos saber en qué índice aparece un elemento determinado.

Pero si nuestro objetivo es saber si un elemento determinado existe en una matriz, entonces .indexOf()no es la mejor opción. Y la razón es simple: al consultar la existencia de algo, esperamos un valor booleano, no un número .

Array.prototype.includes()hace exactamente eso. Determina si un elemento dado existe en una matriz, devolviendo truesi existe, de lo falsecontrario.

En la especificación

Array.prototype.includes ( searchElement [ , fromIndex ] )
  • searchElement - el elemento a buscar.
  • fromIndex(opcional) : el índice desde el que empezar a buscar.

Sumergirse en las especificaciones se siente como buscar potencia.

La especificación dice:

Vayamos paso a paso e intentemos comprender la especificación con ejemplos.

  1. La diferencia aquí es la posición del elemento 4. Debido a que nuestro primer ejemplo coloca 4 en la última posición, includes buscará en toda la matriz. Por especificación .includes()vuelve inmediatamente después de encontrar el searchElement. Esto hace que nuestra segunda operación sea mucho más rápida.
  2. La gran diferencia con el algoritmo SameValueZero frente a la comparación estricta de igualdad (utilizada por .indexOf()) es que permite detectar los elementos NaN .
  3. Devuelve el booleano truecuando se encuentra el elemento y en falsecaso contrario. ¿No más índices como resultado?
  4. Al contrario que .indexOf(), .includes()no omite los elementos de matriz que faltan. En cambio, los trata como valores indefinidos .

¿Estás empezando a sentir el poder?

Ni siquiera nos hemos tocado fromIndex.

Revisemos la especificación:

El segundo argumento opcional tiene como valor fromIndexpredeterminado 0(es decir, se busca en toda la matriz). Si es mayor o igual que la longitud de la matriz, se devuelve falso , es decir, no se buscará la matriz. Si es negativo, se usa como el desplazamiento desde el final de la matriz para calcular fromIndex. Si el índice calculado es menor que 0, se buscará en toda la matriz.
  1. Si no fromIndexse les proporciona, 0se toma el valor predeterminado de y se busca en toda la matriz.
  2. .includes()devuelve inmediatamente falso cuando el valor de fromIndexes mayor que la longitud de la matriz.
  3. Cuando fromIndexes negativo, su valor se calcula como array.length — fromIndex. Esto es particularmente útil cuando se buscan los últimos elementos. Por ejemplo, fromIndex = -5es lo mismo que buscar en los últimos 5 elementos.
  4. Para evitar que se .includes()rompa cuando el fromIndexvalor calculado es inferior a 0, se busca en toda la matriz. Prefiero romper

De acuerdo, una última característica nueva ...

The Exponential Operator (**)

Hemos estado esperando el día en que podamos jugar con exponencialnúmeros como jugamos con suma, resta, multiplicación, división.

Bueno, ese día está aquí.

El operador se **comporta exactamente de la misma manera que Math.pow(). Devuelve el resultado de elevar el primer operando a la potencia del segundo (p x ** y. Ej .).

¡Eso es!

¡Ahora tiene el poder de ES7 ! ¡Úsalo bien!

Gracias a ?

  • 2ality.com por Axel Rauschmayer
  • Especificación de idioma ECMAScript® 2016
  • A todos los fans de He-Man
  • freeCodeCamp para publicar ❤️

Asegúrese de consultar mis artículos sobre ES6:

Exploremos los generadores ES6

Generadores, también conocido como implementación de iterables. medium.freecodecamp.org ¡Oh, sí! Async / Await

async / await es la nueva sintaxis de JavaScript para declarar una función asincrónica. medium.freecodecamp.org