<p><pre><code>    let f = function() { ... g(); ... }
    let g = function() { ... f(); ... }
    f();
</code></pre>
Works despite the temporal dead zone and depends on hoisting. This exact example is why hoisting was kept for let.