¿Por qué las funciones de matriz de JavaScript se nombran como son?

Como respondió alguien más aquí, es push() porque se trata de una pila. Hay una función add() en la colección Set() , porque agrega un valor a un conjunto, y set() en la colección Map() , porque establece el valor de una clave en el mapa. JavaScript y la mayoría de los otros lenguajes no siempre son 100% consistentes en los nombres que usan para las operaciones. Del mismo modo, las colecciones que encontramos implementadas por la mayoría de los idiomas no son idénticas a las definiciones teóricas. Recuerdo haber notado mientras escribía un código de C #, lo cerca que sus diversas colecciones se parecían a sus “ideales” teóricos. Sigo queriendo decir “ideales platónicos” aquí y no puedo evitar pensar que es más preciso. Pero yo retrocedo. (<- intencional) Trabajar con colecciones de C # fue genial y muy irritante al mismo tiempo, porque nunca tendrían la gama completa de operaciones que necesitaba.

No mire demasiado de cerca los nombres de la mayoría de los idiomas; El pragmatismo y el equipaje están a cargo principalmente de estas cosas. PHP es la excepción aquí, ya que es simplemente idiota y está fuera de control cuando se trata de cómo se nombran las funciones.

Lleva el nombre de una estructura similar a una lista llamada pila, que originalmente proviene de un registro de bajo nivel en la CPU. Solo puede acceder a la pila desde cualquier extremo desplazándola hacia la izquierda o hacia la derecha y leyendo el valor que “se cae”, como si fueran pelotas de golf en un tubo. El registro de la pila se usa en el código de ensamblaje de bajo nivel exactamente de la misma manera que la pila de llamadas en los idiomas de nivel superior.

Tratar conceptualmente su matriz como una pila es útil; su código es mucho más simple porque nunca está buscando dentro de la matriz, sino en lo que sale de las operaciones simples de cambio de miembros. Su regla de finalización también es mucho más simple: su tarea finaliza cuando el último elemento se ha desplazado y la matriz está vacía.

Esta terminología también explica otros nombres de métodos ‘impares’ como shift y unshift .

Muchas personas se están moviendo hacia métodos de programación funcional más potentes; forEach , map , reduce, fill y filter . Considere avanzar hacia el aprendizaje de cómo usarlos en lugar de los más antiguos basados ​​en pila cuando sea posible; ES6 y posteriores los hace más fáciles de usar (y dan como resultado un código breve más breve), los marcos modernos como React / Redux los usan mucho, y las optimizaciones futuras de JavaScript probablemente se concentrarán en hacerlos más rápidos. La mayoría de las veces, el único método basado en la pila que usará es push .

Push se llama así porque imagina la matriz como una Pila. Esto comunica al ingeniero que el resultado será agregar el elemento al final de la matriz, y también que debe haber un método Pop coincidente que realice el inverso de esa operación; quitando el último elemento.

Ciertamente podrían haber llamado a estos métodos add / remove, pero la decisión fue claramente hacer referencia al comportamiento de la pila y seguir con esa convención.