You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
varcolor='red';functionchangeColor(){varanotherColor='blue';functionswapColors(){vartempColor=anotherColor;anotherColor=color;color=tempColor;//这个执行环境中可以访问到 tempColor color antherColor}//这里只能访问anotherColor colorswapColors();}changeColor();//这里只能访问color
参考: 冴羽的JavaScript深入系列, by冴羽; Neal_yang
执行上下文
当 JavaScript 代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。
执行上下文有三个重要的属性
变量对象(variable)
变量对象是一个数据作用域,存储了在执行上下文中
定义的变量
和函数声明
全局上下文下的变量对象 : 全局对象
函数上下文下的变量对象 : 活动对象(activation object, AO)
AO是在进入函数上下文时刻被创建的,它通过函数的 arguments 属性初始化。arguments 属性值是 Arguments 对象。
进入上下文 (以下按照123的顺序执行)
函数的所有形参 (如果是函数上下文) -- arguments
函数声明
变量声明
代码执行
在代码执行阶段,会顺序执行代码,根据代码,修改变量对象的值
例子1:
总结:
例子2:
例子3:
作用域链 scope chain
含义:由多个执行上下文的变量对象组成的链表
当代码在一个环境中执行的时候,会创建变量对象的一个
作用域链
this 待读
this的指向,是在函数被调用的时候确定的。也就是执行上下文被创建时确定的
延长作用域链
try-catch 语句中的catch
width语句
垃圾收集
标记清除
主动清除垃圾: xxx = null
The text was updated successfully, but these errors were encountered: