Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

119
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!