Real World Func Decl in Block Scope Breakages

David Herman dherman at
Wed Dec 26 14:40:34 PST 2012

Perhaps, but the mobile web is WebKitty. The ES6 semantics is incompatible with Chrome and Safari's behavior here.


On Dec 26, 2012, at 2:37 PM, Brandon Benvie <brandon at> wrote:

> This appears to be correct. A number of the examples can be boiled down to the following test:
>     if (false) {
>         function x(){
>           console.log('worked');
>         }
>     }
>     x();
> In Chrome, IE, Opera, and Safari 'worked' will be logged. In Firefox it will silently fail.
> On Wed, Dec 26, 2012 at 5:22 PM, Allen Wirfs-Brock <allen at> wrote: 
> Essentially only,  uses of this form are currently interoperable among all major implementations:
> if (condition) {
>      function foo() {};
>      foo();   //function declared and invoked in same conditional blocks.
> }
> Other uses (without other explicit feature or browser detection logic being involved) are not likely to be interoperable.
> I haven't looked in detail at all of Brian's snippets.  But several that I have glanced at look to me like they wouldn't be interoperable among current browsers.

More information about the es-discuss mailing list