[1] This isn't really cheating. In an actual implementation built from scratch, we would use our explicit-control evaluator to interpret a JavaScript program that performs source-level transformations in a syntax phase that runs before execution.
5.4.3 Conditionals, Assignments, and Definitions