Real World Func Decl in Block Scope Breakages

Brandon Benvie brandon at brandonbenvie.com
Wed Dec 26 14:37:49 PST 2012


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 wirfs-brock.com>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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20121226/60895d56/attachment.html>


More information about the es-discuss mailing list