Referencing a JavaScript value before it is declared - can someone explain this

前端 未结 3 1010
予麋鹿
予麋鹿 2020-11-27 16:31

I\'m hoping someone can explain to me why the below JavaScript/HTML will show \"door #2\" when the HTML is viewed in a browser:



        
3条回答
  •  失恋的感觉
    2020-11-27 17:07

    Function declarations are subject of hoisting, and they are evaluated at parse time, by hoisting means that they are available to the entire scope in where they were declared, for example:

    foo(); // alerts foo
    foo = function () { alert('bar')};
    function foo () { alert('foo');}
    foo(); // alerts bar
    

    The first call to foo will execute the function declaration, because at parse time it was made available, the second call of foo will execute the function expression, declared at run-time.

    For a more detailed discussion about the differences between function expressions and function declarations, check this question and this article.

提交回复
热议问题