JavaScript console.log执行顺序?

3

我有类似以下代码:

function pathfind (start,end,map)
{
    this.Init = function ()
    {
       this.open_node = new Array();
       this.open_node.push(start);
       console.log(this.open_node);
       this.Loop();
    }
    this.Loop = function ()
    {
       //Some code here
    }
    this.Init();
}

由于某些原因,当我按下“start”来打开节点时并记录其值时,我得到了“undefined”。然而,在进行一些错误测试后,我意识到在这个Init中注释掉this.Loop();会导致push函数正常工作,并且console.log会像应该的那样返回[start]。有人能解释为什么会出现这种行为吗?
编辑:我正在调用
pathfind({x:2,y:2},{x:24,y:24},parsemap(25,25));

调用pathfind()的那一行在哪里?你传递的参数可能会产生影响... - Lee Taylor
谢谢你指出这个问题。我的测试显示数据类型并不重要,但是这里有。 - Jack Guy
如果在console.log语句之前设置断点会发生什么? - sbr
没有效果。我应该意识到Chrome控制台是异步的,所以不会很好地运行。 - Jack Guy
2个回答

6

经过进一步研究,我发现在Chrome浏览器中console.log不会立即执行,因此导致报告过时。


0

您的代码执行了pathfind函数,该函数返回undefined(这应该是正确的),但您却等待this.Init函数的结果。可能应该执行它而不是pathfind


抱歉,我遗漏了一行重要的代码(this.Init();)。我做了更多的研究,发现console.log不像alert那样立即执行。真是让人费解。:\ - Jack Guy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接