Hoy en día, todos intentan utilizar este tipo de funciones de orden superior para obtener resultados prometedores al escribir menos código. Pero me pregunto cómo funcionan estas funciones internamente.
Supongamos que si escribo algo como
var numbers = [16, 25, 36];
var results = numbers.map(Math.sqrt);
console.log(results); // [4, 5, 6]
Sé que cada elemento de la matriz 'número' está iterando uno por uno, pero ¿cómo ?
Traté de buscarlo, pero aún no obtuve ninguna respuesta satisfactoria.
javascript
node.js
dictionary
higher-order-functions
Bilal Khan
fuente
fuente
map
que se agregó al tipo Array. Esta función toma una función como parámetro que luego se llama mientras recorre la matriz. Los valores de retorno de las llamadas a funciones se devuelven en una matriz.Respuestas:
.map
es solo un método que acepta una devolución de llamada, invoca la devolución de llamada para cada elemento de la matriz y asigna el valor a una nueva matriz. No hay nada muy especial al respecto. Incluso puede implementarlo usted mismo con bastante facilidad:Para cumplir con todas las especificaciones, también debe verificar, entre otras cosas, que
this
es un objeto, quecallback
es invocable y.call
la devolución de llamada con el segundo parámetro pasadomyMap
si hay uno, pero esos son detalles que no importante para una comprensión inicial de las funciones de orden superior.fuente
Supongo que se supone que cada proveedor lo implemente según las especificaciones
La implementación real, por ejemplo V8 puede ser un poco compleja, consulte esta respuesta para comenzar. También puede referirse a la fuente v8 en github pero puede que no sea fácil entender solo una parte aisladamente.
Citado de la respuesta anterior:
Especificación ES2015:
"length"
)).fuente
<li>
list-style-type
no se pueden copiar en Chrome ni FF. ¿Escribiste los números manualmente o hay un método mejor que me falta?