Declarations

Waldemar Horwat waldemar at google.com
Tue Apr 15 15:27:21 PDT 2008


Michael O'Brien wrote:
> As a follow up, the following somewhat surprised me.
> 
> {
>      let b = 1
>      {
>          function fun() {
>              print("CALL: " + b)
>          }
>      }
> }
> fun()
> 
> gives:
> 
> **ERROR** EvalError: uncaught exception: ReferenceError: unresolved  
> lexical reference {multiname: [ns public '']::b [ns internal '']::b  
> [ns public '__ES4__']::b } (near /Users/dherman/es4/src/builtins/ 
> Error.es:86:55-86.55)
> 
> 
> ie. the function is hoisted to the outer var block, but does not seem  
> to capture the scope chain of where it was declared and b is out of  
> scope.
> 
> Is this correct or an RI bug?

This is incorrect and an RI bug, but for a different reason:  fun should be undefined in the outer scope, since it should not get hoisted out of the inner block, as we agreed at the last face-to-face meeting.

    Waldemar



More information about the Es4-discuss mailing list