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