A let binding named secret exists only inside an if block. No outer secret binding exists. What happens when code reads secret after leaving that block?
Explanation
The block-scoped binding is no longer accessible after control leaves its lexical block, and no outer binding can satisfy the lookup. Reading the name therefore throws a ReferenceError rather than yielding the old value or undefined.