var a = 12,
b = 13,
c = 14;
function fn(a){
/*
形参赋值 12
变量提升
var b;
=>在私有作用域中,只有以下两种情况是私有变量
A:声明过的变量(带var/function)
B:形参也是私有变量
剩下的都不是自己私有的变量,都需要基于作用域链的机制向上查找
*/
console.log(a, b, c); // 12 undefined(声明 没有赋值) 14(C是全局的)
var b = c = a =20;
console.log(a, b, c);// 20 20 20
}
fn(a);
console.log(a, b, c);// 12 13 20
方便理解 看下一道练习题(为了更好的理解 用画图方式解释。)
var ary=[12,23];
function fn(ary) {
console.log(ary);
ary[0]=100;
ary=[100];
ary[0]=0;
console.log(ary);
}
fn(ary);
console.log(ary);
输出结果 依次是 12 23 0 100 23 .
需要注意的是ary[100] 会形成一个新的堆内存 ,和AAAFFF222就没有关系。