【问题标题】:Order of javascript executionjavascript执行顺序
【发布时间】: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


【解决方案1】:

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

虽然不太确定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多