Important Notice: We're experiencing email notification issues. If you've posted a question in the community forums recently, please check your profile manually for responses while we're working to fix this.

Search Support

Avoid support scams. We will never ask you to call or text a phone number or share personal information. Please report suspicious activity using the “Report Abuse” option.

Learn More

Èròjà atẹ̀lélànà yii ni a ti fi pamọ́ fọ́jọ́ pípẹ́. Jọ̀wọ́ béèrè ìbéèrè titun bí o bá nílò ìrànwọ́.

Firefox 22.0 serious closure bug

  • 4 àwọn èsì
  • 2 ní àwọn ìṣòro yìí
  • 2 views
  • Èsì tí ó kẹ́hìn lọ́wọ́ cor-el

more options

We have run into what seems like a serious closure bug in Firefox 22.0.

The simple following code executes fine in IE and chrome etc. but fails in a very scary way in FireFox - it thinks the function is undefined !!!

if (true) {

   test();
   function test()  {
       alert("success")
   }

}

If the code is executed outside of the if statement (or if just the function definition is moved outside the if statement) everything is ok.

The same error occurs (not defined) inside other closures like do .. while etc.

We are scared. What did we miss?

We have run into what seems like a serious closure bug in Firefox 22.0. The simple following code executes fine in IE and chrome etc. but fails in a very scary way in FireFox - it thinks the function is undefined !!! if (true) { test(); function test() { alert("success") } } If the code is executed outside of the if statement (or if just the function definition is moved outside the if statement) everything is ok. The same error occurs (not defined) inside other closures like do .. while etc. We are scared. What did we miss?

Ti ṣàtúnṣe nípa mccodev

Ọ̀nà àbáyọ tí a yàn

This has been solved. Firefox is different from other browsers (as we know)... but here's why...

http://stackoverflow.com/questions/18079086/firefox-22-0-scope-bug

Ka ìdáhùn ni ìṣètò kíkà 👍 0

All Replies (4)

more options

Just swap the order of the two statements and place the function definition before calling the function.

if (true) {
   function test()  {
       alert("success")
   }
 test();
} 
more options

Thank you for your time and advice... but that wasn't my point at all.

The point is this seems to be quite a big bug. Javascript by it's very nature can forward reference within scope. As I suggested, the code works fine in all other browsers.

I'm worried this is a huge new bug in Firefox - or worse a secret breaking change. Has anyone got a lead on this? This should work right ???? Is it just me??

Ti ṣàtúnṣe nípa mccodev

more options

Ọ̀nà àbáyọ Tí a Yàn

This has been solved. Firefox is different from other browsers (as we know)... but here's why...

http://stackoverflow.com/questions/18079086/firefox-22-0-scope-bug

more options

I've marked your previous post as the solution since you wrote that it has been solved (Firefox doesn't allow forward reference if a function is defined within a block).