{ /* 外側のブロックの始まり */
let x = { color: "青" };
let y = x; /* yとxが同じオブジェクトを参照する */
let z = 3;
{ /* 内側のブロックの始まり */
let x = 5; /* 外側のxが「マスク」される(隠されてしまう) */
console.log(x); // 5
console.log(y.color); // 青 (yによって参照されているオブジェクトは相変わらずスコープに入っている。外側のブロックのxもスコープには入っている)
y.color = "赤";
console.log(z); // 3 (zはマスクされていない)
} /* 内側のブロックの終わり */
console.log(x.color); // 赤 (内側のスコープでオブジェクトに変更がなされた)
console.log(y.color); // 赤 (xとyは同じオブジェクトを参照している)
console.log(z); // 3
} /* 外側のブロックの終わり */