Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

121
Vistas
Desglosar 1 forro javascript

Encontré un código JavaScript que crea una matriz y la llena con números del 0 al 9.

El código es:

 var arr = Array.apply(null, {length: 10}).map(Number.call, Number); console.log(arr);

El código anterior crea una matriz e inserta números del 0 al 9 en ella. No entiendo cómo está funcionando. Conozco todos los métodos que se usan en esto, como apply , map y call , pero aún no entiendo cómo funciona.

¿Alguien puede explicar el funcionamiento del código dividiéndolo en partes? Por ejemplo, cómo se ejecuta el código paso a paso y cómo da como resultado una matriz que tiene números del 0 al 9.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En primer lugar, su código crea una matriz de 10 elementos, todos los cuales no están undefined con el siguiente código:

 Array.apply(null, {length: 10})

Lo anterior es como escribir:

 Array(undefined, undefined, undefined, undefined, ... 6 more times ...)

Esto funciona porque el objeto {length: 10} es similar a una matriz ya que tiene una propiedad de length . Por lo general, el segundo argumento de .apply() es una matriz de argumentos con los que desea llamar a la función. Sin embargo, como está pasando un objeto en este caso, JS toma la propiedad de longitud y llama a la función Array() con 10 argumentos undefined , ya que las claves del objeto {length: 10} no definen valores para las propiedades 0 a 9

A continuación, se mapea la matriz de 10 valores undefined . Cuando se usa .map() , el primer argumento es la función de mapeo y el segundo argumento del método .map() es this argumento, this indica a qué debe referirse dentro de la primera función de mapeo. Una forma de ver su método de mapa es volver a escribirlo así:

 .map((element, index, array) => Number.call(element, index, array))

El método .map() iterará a través de todos sus 10 elementos undefined , y para cada elemento se invocará su devolución de llamada con el index de ese elemento. Cuando se usa Number.call() , this para la llamada a la función Number() se establece en undefined (es decir: element ). Esto no afecta el comportamiento de la llamada a Number() ya que no depende de ningún valor en particular para su ejecución. Como resultado, el método Number.call anterior es lo mismo que usar Number(index, array) , donde se descarta la array , por lo que simplemente realiza Number(index) .

El segundo argumento del método .map() es definir el enlace this para la primera función de mapeo que pasa al método .map() . Cuando pasa Number.call como la función de mapeo, está pasando una referencia al método de call definido en Function.prototype.call . El método de call solo sabe qué función debe invocar en función de this valor definido al llamar al método .call() . Como solo le está pasando al método .map() una referencia a la función call() y no la está invocando con () , this se pierde, por lo que necesita definir explícitamente cuál es this valor. Eso se puede hacer pasando Number como el segundo argumento de su llamada al método de mapa.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda