在简单的示例中,执行上下文如何

时间:2016-09-14 19:10:41

标签: javascript

谢谢你帮助我。

在我参加的课程中,我遇到了以下代码:

var carlike = function(obj, loc){
    obj.loc = loc;
    obj.move = move;
    return obj;
};

var move = function(){
    this.loc++;
};

var ben = carlike({}, 9);

我的理解是,当在其执行上下文的创建阶段期间在最后一行调用函数carlike时,变量move被设置为undefined。所以我的问题是:move设置为等于function() {this.loc++;};?我发现这令人困惑,因为移动功能是在carlike功能之后定义的。那么carlike如何在它之后访问环境。

我真的想知道它在执行上下文,范围等方面的工作原理。

我读过的一些事情试图理解这一点:

http://dmitrysoshnikov.com/ecmascript/chapter-1-execution-contexts/ http://corporate.tuenti.com/en/dev/blog/functions-and-execution-contexts-in-javascript-2

1 个答案:

答案 0 :(得分:0)

它可以访问该移动变量,因为虽然函数移动是在函数carlike之后声明的,但是函数carlike在引用之后才引用move,因为在移动之后调用carlike被定义为函数。如果你在move的定义之上调用carlike,那么move将被设置为undefined,因为该函数还不存在。