JavaScript には関数スコープのみがあり、各関数にはウィンドウ オブジェクトへの直接スコープ チェーンがあります。
変数は、見つかるまで内側から外側にレイヤーごとに検索されます。
同時に、それを見つけて使用できるだけでなく、外部変数を変更することもできます。
var color = "blue";
関数changeColor () {
var anotherColor = "red";
function swapColors() {
var tempColor = anotherColor;
anotherColor = color;
color = tempColor;
}
swapColors();
}
changeColor();
console.log(color); // "red" 外部変数はアクセスできるだけでなく変更も可能です