2012-06-05 85 views
1

雖然陰影不應該被使用(或者只是爲了混淆),因爲它很混亂,我想完全理解它。而我得到這個奇怪的事情:陰影造成的奇怪行爲

alert(parseInt('123'));//Here, I expected 123 but it's 'overshadowed' 
function parseInt(){return 'overshadowed';} 
alert(parseInt('123'));//Here it's 'overshadowed' too 

爲什麼第一alert輸出「黯然失色」而功能尚未修改?

PS:我被Variable shadowing in JavaScript

回答

2

在JavaScript的啓發,所有的聲明是隱含放置在範圍的開始(「懸掛」),所以它不會如果parseInt函數關係()定義在第二,最後或第一行。

+2

它通常被稱爲「提升」。 http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Histing_ – ajm

+0

@ajm:是的,謝謝你的提示,並將其添加到答案中。 –