【发布时间】:2012-11-23 11:37:14
【问题描述】:
我读到了
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() 已经被重新声明了。
有什么想法吗?谢谢
【问题讨论】:
-
你使用什么浏览器调用
jan警报'bob'?无论如何我都会得到'newbob'...即使我在第二个bob声明之后声明另一个引用bob的变量... -
抱歉,没有意识到您的示例来自链接。我不确定它是否正确,因为这不是我至少得到的结果......试试看:jsfiddle.net/D8R9E
-
对我来说也是一样,在 Ie、Firefox 和 Chrome(最新版本)上都警告“newbob”
标签: javascript function-pointers execution