内側の関数から外側の関数[[スコープ (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`が不要になるまで破棄できず、結果として状態を持つことになる。