編譯器(把代碼解析成爲瀏覽器看得懂的結構):詞法解析 / AST抽象語法樹 / 構建出瀏覽器能夠執行的代碼
引擎(V8引擎,webkit內核): 變量提升 / 作用域、閉包 / 變量對象 / 堆棧內存 / GO、VO、AO、EC、ECStack
let a = { n : 10 };
let b = a;
b.n = 20;
console.log(a.n); //20
let a = { n : 10 };
let b = a;
b = { n : 20 };
console.log(a.n); //10
引擎處理流程圖:
面試題:
let a = { n : 10 };
let b = a;
b.m = b = { n : 20 }; //即 c = { n : 20 } b.m = c b = c
console.log(a); //{n:10,m:{n:20}}
console.log(b); //{n:20}
let x = [12,23];
function fn(y){ //即 y = x;
y[0] = 100;
y = [100];
y[1] = 200;
console.log(y); // [100,200]
}
fn(x);
console.log(x); // [100,23]