2013-01-20 137 views

回答

4

功能沒有提升到範圍

function run() { 

    fn1(); // logs "hi" 
    fn2(); // error 

    function fn1() { console.log("hi"); } 
    var fn2 = function() { console.log("hi again"); };  

} 

的頂部看到這個以前的相關答案。 Are named functions or anonymous functions preferred in JavaScript?

這會顯得與此類似解析縱貫

function run() { 

     function fn1() { console.log("hi"); } 
     var fn2; 

     fn1(); // logs "hi" 
     fn2(); // error 


     fn2 = function() { console.log("hi again"); };  

    } 
+0

多謝,特雷弗後。這種差異背後有理由/邏輯嗎? – AdamNYC

+0

這就是JS分析器的寫法。也許這篇文章會有幫助。 http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-javascript-hoisting-explained/。我曾經有過這樣一篇關於它如何存儲變量的偉大文章,但我無法找到它。 :( – Trevor