内側の関数から外側の関数[[スコープ (JavaScript)|スコープ]]へのアクセスを提供するもの。 ```js function createCounter() { let cnt = 0; function getCount() { return cnt; } function increment() { cnt++; } return { getCount, increment }; } const { getCount, increment } = createCounter(); console.log(getCount()); // 0 increment(); console.log(getCount()); // 1 increment(); console.log(getCount()); // 2 ``` `getCount`や`increment`は`cnt`を参照しており、それらは変数(`getCount`、`increment`)に代入されているため、`cnt`は`getCount`や`increment`が不要になるまで破棄できず、結果として状態を持つことになる。