Es porque en realidad estás diciendo:
c = 10;
b = c;
let a = b;
Y no lo que crees que estás diciendo, que es:
let a = 10;
let b = 10;
let c = 10;
Notarás que no importa cuántas variables agregues a tu cadena, solo será la primera (a) que causa el error.
Esto se debe a que "let" define su variable en el bloque (o "localmente", más o menos significa "entre paréntesis") en el que lo declara.
Si declara una variable sin "let", abarca la variable globalmente.
Entonces, en la función donde establece sus variables, todo obtiene el valor 10 (puede ver esto en el depurador si coloca un punto de interrupción). Si coloca un registro de consola para a, b, c en esa primera función, todo está bien.
Pero tan pronto como abandonas esa función, la primera (a), y nuevamente, ten en cuenta que, técnicamente en el orden de asignación, es la última, "desaparece" (de nuevo, puedes ver esto en el depurador si establece un punto de interrupción en la segunda función), pero los otros dos (o los muchos que agregue) todavía están disponibles.
Esto se debe a que "dejar" SOLO SE APLICA (solo a los ámbitos locales) LA PRIMERA VARIABLE - nuevamente, que técnicamente es el último en ser declarado y asignado un valor - en la cadena. El resto técnicamente no tiene "let" delante de ellos. Por lo tanto, técnicamente se declaran globalmente (es decir, en el objeto global), por lo que aparecen en su segunda función.
Pruébelo: elimine la palabra clave "let". Todos sus vars ahora estarán disponibles.
"var" tiene un efecto de alcance local similar, pero difiere en cómo se "alza" la variable, que es algo que definitivamente debe entender, pero que no está directamente relacionado con su pregunta.
(Por cierto, esta pregunta sería suficiente para los desarrolladores profesionales de JS para que sea buena).
Le sugiero encarecidamente que pase tiempo con las diferencias en cómo se pueden declarar las variables en JS: sin una palabra clave, con "let" y con "var".
b
yc
no se puede anteponer lavar
palabra clave.a
yd
son locales parafirst
.Dim Apple, Banana, Pear As Fruit
significaDim Apple / Dim Banana / Dim Pear As Fruit
, y noDim Apple As Fruit / ...
.