Language
closure: 関数は作成時のローカル状態を保持する
返した関数は外側のローカル変数を呼び出し後も参照します。
Sourcecounters.ts
Node.js 22
export const createCounter = () => { let count = 0; return () => ++count; };Testcounters.test.ts
Node.js 22
import assert from 'node:assert/strict'; import test from 'node:test'; import { createCounter } from '../../src/closure/counters.js';
test('closureは作成時のローカル状態を呼び出し間で保持する', () => { const count = createCounter(); assert.equal(count(), 1); assert.equal(count(), 2); });01Assertion
このテストで確認できること
- 一回目は1を返す
- 二回目は2を返す
closureは状態を隠せますが、寿命も延ばすため保持範囲を意識します。
OBSERVED RESULT
1, 2