{ /* 外側のブロックの始まり */ 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 } /* 外側のブロックの終わり */