Por ejemplo, en este video de Redux , el instructor siempre usa sintaxis como
const counter = (state=0, action) => {
... function body here
}
donde simplemente usaría el "tradicional"
function counter(state=0, action) {
... function body here
}
Que en realidad es más corto y, en mi opinión, más claro. Es más fácil escanear el borde izquierdo bastante uniforme y estructurado de la página para la palabra "función" que escanear el borde derecho irregular para un pequeño "=>".
Aparte de this
, y tratando de ser objetivo, no de opinión, ¿hay alguna diferencia útil o ventaja en la sintaxis novedosa?
javascript
functions
es6
user949300
fuente
fuente
const
ayuda a garantizar que la función no se redefina más adelante.Respuestas:
Las declaraciones de función (funciones nombradas, se muestra la segunda sintaxis) se elevan a la parte superior del alcance léxico completo, incluso aquellos detrás de bloques arbitrarios y de control, como las
if
declaraciones. El uso deconst
(likelet
) para declarar una variable le da un alcance de bloque, detiene la elevación completa (elevación a un mero bloque) y garantiza que no se pueda volver a declarar.Cuando se concatenan scripts juntos, o algunos usan otras herramientas de creación de paquetes, el levantamiento de funciones puede romper scripts conflictivos de formas que son difíciles de depurar ya que falla en silencio. Una nueva declaración
const
arrojará una excepción antes de que el programa pueda ejecutarse, por lo que es mucho más fácil de depurar.fuente
const
. Es un poco miope, en mi opinión, comenzar a usar enconst
todas partes por esta razón en la era de eslint, webpack, babel, etc. Ya nadie está concatenando archivos manualmente durante al menos una década.He aquí por qué debería usar
function
:La señalización es clara y concisa. Esto es mucho más beneficioso que cualquiera de las inquietudes de elevación de casos extremos que se enumeran en la otra respuesta.
En realidad, desea izar dentro de los módulos porque, como puede ver en el siguiente código, la
const
declaración detryDoTheThing
falla en silencio y no se detectará hasta que intente llamarla.La mayoría de los juniors con los que entro en contacto comienzan a usar
const
para declarar cada función porque es una moda en este momento, como usar espacios sobre pestañas o hacer todofunctional!!!
porque "OOP es malo". No hagas eso. No quieres ser ese tipo que sigue las modas sin comprender completamente las implicaciones.vs
fuente