【发布时间】:2013-10-11 00:25:19
【问题描述】:
好的,这是一些代码
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 namemyFunc` 及其分配给全局变量对象的 [[scope]] 属性。
当我调用myFunc 时,它会创建自己的执行上下文和激活对象,其中所有函数的参数和函数声明都会在任何逐行代码执行之前初始化。
当创建内部函数对象时,它的内部 [[scope]] 属性被分配了其外部执行上下文的变量对象 + 全局变量对象的值,因此每个函数都会创建自己的执行上下文,但在此之前每个函数的内部 [[scope] ] 属性首先分配。
我已经阅读了堆栈溢出中的大量文章,但我想知道我理解得很好还是应该阅读更多。
【问题讨论】:
-
您是在问变量提升是否会以某种方式干扰闭包的工作方式?不,它不能。
-
我想知道我的解释是否正确?我知道闭包是如何工作的
-
听上去好像明白了,但还是有些不清楚。我只是不确定什么。
-
你能用你自己的观点解释一下吗
标签: javascript