undefined undefined hu 

is what should be produced according to the spec. 

Divergence among implementations is a good sign that there is an opportunity to 
clean up this particular mess. 

The current ES6 draft requires an early error for this function because it is 
trying to hoist a var declaration across a block-level declaration of the same 
identifier.  EG,

function f() {
    {
        let x=1;  //early error let declaration of x in a block that contains a 
nested var declaration of x
        {
             var x=2;
        }
    }
}

Because let is a new feature, this restriction doesn't introduce any backwards 
compatibility issues. However, for consistency, the draft also currently 
applies the same let declaration restrictions to catch parameters.  Your 
experiment suggests that that we might actually be able to to that ...

Allen





On May 14, 2012, at 2:57 AM, Claus Reinke wrote:

> What should be the output of the following code?
> 
> (function(){
> 
> try {
> throw "hi";
> } catch (e) {
> var e = "ho";
> var o = "hu";
> var u;
> console.log(e);
> }
> console.log(e,u,o);
> 
> }());
> 
> It seems clear that the first console.log should output 'ho'.
> Implementations seem to disagree on the second console.log, though.
> 
> From my current understanding of the spec, I expected: 
>   undefined undefined 'hu'
> 
> which I consider unfortunate; especially the first 'undefined'
> was intended to demonstrate the bad effects of separating declaration from 
> initialization while treating catch and function differently, in terms of 
> scoping.
> 
> node, opera: undefined undefined 'hu'
> 
> firefox 12 complains: 'e is not defined'
> 
> ie 9 outputs: houndefinedhu
> 
> It looks as if firefox misses the hoisted declaration of 'e'
> (it doesn't complain about 'u', only about 'e') while ie9 somehow merges the 
> declaration and the catch parameter.
> 
> Claus
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
> 

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to