1

Entiendo que la declaración de una variable es una sentencia (y no una expresión porque no se devuelve un valor):

let a

Entiendo también que una asignación es también una sentencia y además una expresión, porque ésta devuelve un valor:

a= 2

También entiendo que cuando declaro y asigno un valor en la misma linea, ésto es una sentencia (y no una expresión, porque no devuelve ningún valor):

let a = 5

Mi pregunta es:

Si están ocurriendo 2 cosas en una misma linea, por qué se considera que la principal es la declaración y no la asignación?

console.log(let a=3)
> Uncaught SyntaxError: missing ) after argument list

en cambio:

console.log(a=3)
3
  • pues porque el lenguaje no contempla eso la declaración y asignación como parámetro de una función. Porque si esto fuera sintaxis válido, cual crees que sería el comportamiento del código, cual sería el `scope` de la variable declarada y asignada como parámetro de función? Donde exisitiria? dentro de la función? Sería accesible desde fuera? – hawks Oct 22 '20 at 19:58
  • 2
    Una declaración siempre va a ser tratada como tal, independientemente de que solo declares una variable o le asignes un valor, porque, si no lo haces, Javascript automáticamente asigna `null`. – Triby Oct 22 '20 at 20:11
  • 1
    @Triby `undefined` – Pablo Lozano Oct 23 '20 at 07:22
  • 1
    @PabloLozano, ¿yo `undefined`? LOL. Ya en serio, gracias por la aclaración. – Triby Oct 23 '20 at 14:26
  • nuestro buen @PabloLozano explico en la respuestas que te coloque alli cada una de ellas – JackNavaRow Oct 23 '20 at 19:08

1 Answers1

1

Gracias @Triby y @PabloLozano

Entonces recapitulando:

let a= 5

Esta sentencia es una declaración y, por tanto, no es una expresión.

Si la sentencia fuese una asignación:

a= 5

entonces sí que sería una expresión, ya que toda asignación en JavaScript devuelve el valor de la asignación (además de asignar un valor a la variable). En este caso se evalúa a: 5

En cambio las declaraciones no devuelven ningún valor en JavaScript y por tanto, se consideran sentencias (aún habiendo expresiones en su interior). De hecho, en esta declaración hay 2 expresiones:

5
a=5