好的,这是一些代码
function myFunc(){
var myvar = 8;
function myFunc2(num){
alert(myvar+num);
}
myFunc2(2);
}
myFunc();
我想清除我的想法,所以如果我错了请纠正我
我已经阅读了堆栈溢出中的大量文章,但我想知道我理解它还是应该阅读更多。
据我了解,幕后发生的事情是in global execution context there it creates function object with the name
myFunc` 及其 [[scope]] 属性分配给全局变量对象。
当我调用myFunc
它时,它会创建自己的执行上下文和激活对象,其中所有函数的参数和函数声明在任何逐行代码执行之前初始化。
当创建内部函数对象时,它的内部 [[scope]] 属性被分配了其外部执行上下文的变量对象 + 全局变量对象的值,因此每个函数都创建自己的执行上下文,但在此之前每个函数的内部 [[scope]] 属性是首先分配。
我已经阅读了堆栈溢出中的大量文章,但我想知道我理解它还是应该阅读更多。