¿Hay alguna razón por la cual se necesita la palabra clave de function para las funciones regulares de javascript? ¿Cuál es la consideración de diseño detrás de Ecma International?
Para mí, los corchetes {} después de la función indican que es una función, por lo que parecería lógico que se pueda omitir. Al menos, deberíamos tener dos formas de escribirlo para reducir el texto estándar.
Tenga en cuenta que las funciones de flecha no son lo mismo que las declaraciones de funciones normales porque no se elevan.
Dentro de un objeto, podemos especificarlo sin una palabra clave de function .
const person = { name: "Taylor", sayHello() { return `Hello! My name is ${this.name}.`; } };¿Por qué no podemos hacerlo fuera del alcance de un Objeto?
Una de las razones sería que, si se hiciera de tal manera que pudiéramos tener declaraciones de funciones sin la palabra clave function , la sintaxis sería ambigua. Primero ten en cuenta que:
Los puntos y comas son opcionales (y algunos prefieren escribir sin ellos)
Se permiten líneas nuevas entre el final de una lista ) argumentos y el comienzo de un bloque de funciones {
Se permiten bloques simples, es decir, sintaxis como:
console.log('foo'); { console.log('bar'); }Entonces, si se permitiera lo siguiente:
sayHello() { console.log('baz'); } ¿Qué significaría? ¿Significa que esta sería la definición de una función sayHello , o significa invocar una función llamada sayHello y luego iniciar un nuevo bloque?
Requerir declaraciones de función para usar la palabra clave function mantiene las cosas absolutamente inequívocas.