2012-06-05 81 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:是的,谢谢你的提示,并将其添加到答案中。 –