2012-12-05 41 views
2

的,我讀了訂購JavaScript執行

的JavaScript緩存任何其他變量之前聲明的函數, 此之後,它可以追溯到範圍的頂部和運行變量 定義和功能調用的順序他們似乎

而且我不明白這個例子

//bob first initialization 
function bob() 
{ 
    alert('bob'); 
} 

//set jan to bob via reference 
var jan = bob; 

//set bob to another function 
function bob() 
{ 
    alert('newbob'); 
} 

jan(); //alerts 'bob' 
bob(); //alerts 'newbob' 

bob()函數在執行前被聲明和緩存。那麼爲什麼jan()提醒'bob'而不是'newbob'?當jan初始化時,bob()已經被重新聲明。

任何想法?感謝

+0

你用什麼瀏覽器調用'jan' alerts''bob''?無論如何,我都會得到'newbob''即使我在第二個bob聲明之後聲明另一個引用'bob'的變量... – Ian

+0

對不起,您沒有意識到您的示例來自鏈接。我不確定它是否正確,因爲那不是我得到的結果,至少...嘗試它:http://jsfiddle.net/D8R9E/ – Ian

+0

這對我來說也是一樣,都在IE,Firefox和Firefox上警惕「newbob」 Chrome (最新版本) – C5H8NNaO4

回答

1

因爲jan點的bob第一個聲明(如指針),而不是新的聲明bob你需要的第二個聲明

不敢肯定,雖然後設置jan = bob;