2

我读到了

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() 已经被重新声明了。

有任何想法吗?谢谢

4

1 回答 1

1

因为jan指向bob(作为指针)的第一个声明,而不是bob你需要jan = bob;在第二个声明之后设置的新声明

不过不太确定。

于 2012-12-05T15:44:25.540 回答