Hoisting behaviour of 'const' and 'let'

David-Sarah Hopwood david.hopwood at industrial-designers.co.uk
Sun Oct 12 12:11:42 PDT 2008

Peter Michaux wrote:
> Hi David,
> offlist as I haven't been following this closely enough...

I prefer to discuss on the list, for future reference.

>>>>    * it doesn't need to hoist for backward compatibility, unlike 'var';
>>> Not for compatibility with the standard, but const as implemented in
>>> at least 2/4 (not sure about JSCore) hoists, I believe.
>> You mean code like this?
>> (function () {
>>  print(x);
>>  { const x = 42; }
>> })();
>> (calls 'print(undefined)').
> The expected output should be "undefined", shouldn't it?

For some definition of "expected". That's what it does in FF3 (I don't
have Safari or Opera installed, and IE7 throws a SyntaxError), but I
don't think it is expected, or useful, that a const variable can
effectively be mutable. For 'var' there are potential uses of hoisting
(even if they would be more clearly expressed in other ways), but not
really for 'const'.

David-Sarah Hopwood

More information about the Es-discuss mailing list