变量说明:
AO(active object):活跃的变量对象(函数中的叫AO,全局的叫VO)存储变量的地方
1、函数声明定义步骤
(1)创建一个函数(堆内存)(函数的作用域在创建的时候就形成了;执行的时候形成的是上下文 )
+ 创建一个堆内存
+ 声明函数作用域(在哪个上下文创建的,作用域就是谁)下图可以证明
+ 存储东西
+ 把16进制地址放在栈中供变量引用
(2)声明一个变量fn(函数名其实也是变量名)
(3)关联
2、普通函数执行
(1)形成一个全新的私有上下文(EC(fn))==>进栈执行
(2)代码执行前处理的事情
+ 初始化作用域链
+ 声明this指向
+ 初始化arguments集合
+ 形参赋值
+ 变量提升
(3)代码执行
(4)出栈OR不出栈
3、练习题
var x = [12, 23];
function fn(y) {
y[0] = 100;
y = [100];
y[1] = 200;
console.log(y);
}
// fn(x);
console.log(x);
分析