son las declaraciones:
let a;
y
let a=undefined;
alguna vez diferente? ¿ Siempre se compilan con el mismo código en el nodo y/o en el navegador?
A una variable definida por un LexicalBinding con un Initializer se le asigna el valor de su Initializer's AssignmentExpression cuando se evalúa el LexicalBinding, no cuando se crea la variable. Si un LexicalBinding en una declaración let no tiene un Inicializador, a la variable se le asigna el valor indefinido cuando se evalúa el LexicalBinding.
Donde la inicialización let ejecuta el paso:
Llevar a cabo ? InitializeReferencedBinding(lhs, indefinido).
(en el caso de LexicalBinding : BindingIdentifier ), o el paso
Llevar a cabo ? InitializeReferencedBinding(lhs, valor).
donde value es lo que está en el lado derecho de = .
Supongo que una situación muy extraña en la que podrían ser diferentes es si alguien creó otro identificador llamado undefined , pero en cualquier código remotamente sensible, eso no debería verse.
{ const undefined = 5; let a = undefined; console.log(a); }