我试图了解执行上下文,创建阶段和执行阶段。

我想知道,有人可以帮我理解为什么吗,

console.log(thisFunction.ojbect1);


返回-'undefined'。

我本来以为,在创建阶段之后,当变量被赋予“未定义”时,执行阶段便会运行,然后在该阶段将对象填充到变量中。

那么,为什么要为“ object1”而不是整个对象获取“ undefined”?

非常感谢。下面的代码。

var thisFunction = function(){
    var object1 = {
        firstname: 'Mark',
        printName: function(){
        console.log(this.firstname);
        }
    };

    object1.printName();
};

thisFunction();
console.log(thisFunction.object1);

最佳答案

“ Object1”不是“ thisFunction”的属性,因此不能调用它。 “ Object1”是在“ thisFunction”的范围内创建的变量。

您只能访问父范围的变量。

如果您想更多地了解函数作用域,请阅读以下有趣的文章。


Ryanmorr - Understanding scope and context
MDN - Closures

07-24 17:26
查看更多