我试图了解执行上下文,创建阶段和执行阶段。
我想知道,有人可以帮我理解为什么吗,
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