Recientemente comencé a mantener el código JavaScript de otra persona. Corrijo errores, agrego funciones y también trato de ordenar el código y hacerlo más consistente.
El desarrollador anterior usó dos formas de declarar funciones y no puedo determinar si hay una razón detrás de esto o no.
Las dos formas son:
var funciónUno = función() { // Algo de código };
función funciónDos() { // Algo de código }
¿Cuáles son las razones para usar estos dos métodos diferentes y cuáles son las ventajas y desventajas de cada uno? ¿Hay algo que se pueda hacer con un método que no se pueda hacer con el otro?
- Richard Garside
SourcefunctionTwo
es una declaración de función y se define tan pronto como su entorno se ejecuta la función o script (debido a hoisting).
Por ejemplo, una expresión de función:
// TypeError: functionOne no es una función
funciónUno();
var funciónUno = función() {
consola.log("¡Hola!");
};
Y, una declaración de función:
// Salidas: "¡Hola!"
funciónDos();
función funciónDos() {
consola.log("¡Hola!");
}
Históricamente, las declaraciones de funciones definidas dentro de bloques se manejaban de manera inconsistente entre navegadores. El modo estricto (introducido en ES5) resolvió esto mediante declaraciones de función de alcance a su bloque adjunto.
'use strict';
{ // ¡nota este bloque!
función funciónTres() {
consola.log("¡Hola!");
}
}
funciónTres(); // Error de referencia