Sé que debe andar ligeramente al hacer llamadas recursivas a funciones en JavaScript porque su segunda llamada podría ser hasta 10 veces más lenta.Llamar a función recursiva en JavaScript
Eloquent JavaScript estados:
Hay un problema importante: En la mayoría de las implementaciones de JavaScript, esta segunda versión es aproximadamente 10 veces más lenta que la primera. En JavaScript, ejecutar un bucle simple es mucho más barato que llamar a una función varias veces.
John Resig incluso dice que esto es un problema en la publicación this.
Mi pregunta es: ¿Por qué es tan ineficiente utilizar la recursión? ¿Es solo la forma en que se construye un motor en particular? ¿Alguna vez veremos un momento en JavaScript donde este no sea el caso?
Supongo que es un alcance: P Gran pregunta, tengo curiosidad por lo que responden es! – Pelshoff
La sobrecarga de llamada de función es simplemente mayor que la del control de bucle; eso es cierto en casi cualquier lenguaje de programación. Hay mucho más que hacer al llamar una función: asignar e inicializar un nuevo alcance, guardar la dirección de retorno, calcular los parámetros, etc. Tenga en cuenta que los intérpretes de JavaScript se han acelerado a un ritmo muy rápido, por lo que las sugerencias de rendimiento en un 3 una publicación (o libro) de blog de un año debe ser cuestionada. – Pointy
"porque su segunda llamada podría ser hasta 10 veces más lenta" Eso no es lo que dice el texto. Dice que la segunda versión del código es 10 veces más lenta. –