Dmitry A. Soshnikov :

> http://dmitrysoshnikov.com/notes/note-4-two-words-about-hoisting/

Excellent article.

The most interesting example for me was:

// a.js

function foo() {
  alert(1);
}

foo(); // 2 ?

// b.js

function foo() {
  alert(2);
}

Which demonstrates how Function Declarations are created during
variable instantiation time on entering in particular execution
context. And especially how the second declaration replace the value
of created property of variable object or lexical environment.

However, sometimes if you know how it works FD you can be confused
from non-standard Function Statements.

e.g.

foo(); //It will alert 1

function foo() {
     alert(1);
}

if (true) {
    function foo() {
        alert(2);
    }
}

foo(); //2

While the first is FD and will be hoisted the second is non standard
FunctionStatement and will be created during execution time and will
replace the value of `foo' with newly created function.

And of course here is some quirks behavior and some implementation
interpret FS as FD, but this is out of my example.

For those who are interested in this topic, Jury has written great article:

<URL: http://kangax.github.com/nfe/>

-- 
To view archived discussions from the original JSMentors Mailman list: 
http://www.mail-archive.com/jsmentors@jsmentors.com/

To search via a non-Google archive, visit here: 
http://www.mail-archive.com/jsmentors@googlegroups.com/

To unsubscribe from this group, send email to
jsmentors+unsubscr...@googlegroups.com

Reply via email to