很明显,在调用新的常规函数(声明)时,会在执行堆栈(顺序)的顶部放置一个新的执行上下文。
当调用作为对象的属性值的Method时,会发生相同的过程吗?
下面的对象方法中的常规函数声明证明,即使将常规函数声明放在对象的方法中,也会发生提升。
var testObj = {
testMethod: function() {
withinMethodFunct();
function withinMethodFunct() {
alert('hello alien planet...');
}
}
}
testObj.testMethod();
由于内部方法函数(MethodMethodFunct())被吊起并且可以在定义之前调用它,所以这告诉我testMethod()空间/环境具有变量对象(VO),这意味着它具有自己的执行上下文。
如果这是真的,那么范围链是什么样的?
如果有人可以阐明这一点,将不胜感激。