Dado este ejemplo de Javascript que encontré
var sum = function() {
var i, sum = 0;
for(i = 0; i < arguments.length; i += 1) {
sum += arguments[i];
}
return sum;
};
¿Qué ventaja hay en asignar una función a una var?
javascript
octopusgrabbus
fuente
fuente
Respuestas:
La respuesta corta que creo es simplemente que está creando una función anónima asignada a una variable, en lugar de crear una función con nombre con ...
Una buena manera de verificar las diferencias es llamar a .ToString () en ellas y ver la diferencia o puede hacer console.log (sum.name). Uno dará un nombre real y el otro nada, es decir, la función anónima (la asignada a la var). También hay detalles, como var sum = function () {} se define en tiempo de ejecución y la función sum () {} se define en tiempo de análisis.
fuente
Una ventaja es que no puede usar una declaración de función en un bloque. Solo pueden estar en el nivel superior de un archivo o directamente dentro de otra función.
Todo esto no está especificado por el estándar y los navegadores hacen cosas diferentes, consulte /programming/10069204/function-declarations-inside-if-else-statements . Entonces, si tiene que usar el otro estilo a veces, por coherencia, es posible que siempre desee hacerlo
Además, no estoy seguro de esto, pero si recuerdo correctamente, algunos minificadores antiguos no eran lo suficientemente inteligentes como para manejar declaraciones de funciones y no cambiarles el nombre.
fuente
No soy un experto en Javascript, así que tómalo con un poco de sal. Creo que en algunos casos la gente podría hacerlo por estilo y lo mismo podría lograrse simplemente escribiendo "function sum () {...}"
Sin embargo, asignar una función a una variable es una técnica muy poderosa en la programación funcional. Si está familiarizado con OOP, es algo similar al polimorfismo. Piense en el ejemplo clásico de la clase base de animales y las clases de deriva de perros / gatos. Puede escribir código que funcione con Animal pero cuando llama a una función, esa función podría hacer un trabajo diferente dependiendo del tipo de instancia.
En la programación funcional, podría tener un algoritmo que funciona con "una función", pero si está utilizando una variable para llamar a esa función, tiene la flexibilidad de asignar una función diferente en tiempo de ejecución.
Por ejemplo, supongamos que escribe un algoritmo para presentar 10,000 puntos de datos en una ventana que tiene solo 500 píxeles de ancho. Cada píxel representará 20 puntos de datos y, para presentarlos, debe agregar esos 20 puntos de datos en un solo valor.
Entonces, supongamos que define un algoritmo para presentar los 10,000 puntos y este algoritmo usa una variable de función llamada agregado de la siguiente manera:
Ahora, en tiempo de ejecución, su usuario puede seleccionar cómo se agregarán los datos. Su variable de función real puede ser cualquiera de los siguientes:
fuente
Es principalmente una cuestión de estilo, ya que las únicas situaciones en las que aparece la diferencia (llamar a algunas de las funciones antes de finalizar todas las declaraciones; usar el método toString) son una especie de casos de esquina, en mi opinión.
Uno de los argumentos que he escuchado que respalda este
var =
estilo es que es consistente con la forma en que declaras variables normales. Esto limita la cantidad de funciones de lenguaje que usa y simplifica la tarea de presentar su programa a alguien nuevo en Javascript.fuente