2012-12-05 37 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;