In ES6 strict mode: do function declarations within a block hoist?
# Andreas Rossberg (12 years ago)
Yes, that is valid. Function bindings are initialised when entering a scope, all other declarations when their respective statement is executed -- before that any access will cause a ReferenceError (the so-called temporal dead zone).
In particular, classes don't "hoist", because their extends clause has to be evaluated at the right point in time.
# John Lenz (12 years ago)
Thanks.
That is to say, is this valid:
if (x) { f(); function f() { doSomething() } }The same question applies to class declarations. I assume that top level class declarations hoist. (Where is this in the spec?)
That is to say, is this valid: if (x) { f(); function f() { doSomething() } } The same question applies to class declarations. I assume that top level class declarations hoist. (Where is this in the spec?) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140605/e51eec55/attachment.html>