クロージャについて

カテゴリ

コーディング

時間

・クロージャー

定義・・・レキシカルスコープの変数を関数が使用している状態


ケース01・・・プライベート変数の定義

グローバルに定義するとどこからでも参照できるため、関数スコープ内に変数を定義

・グローバルに定義

let num = 0
console.log("Global", num);

increment()
increment()
increment()

function increment() {
    num = num + 1
    console.log(num);
}


・クロージャー使用

function incrementFactory() {
    let num = 0

    function increment() {
        num = num + 1
        console.log(num);
    }
    return increment
}

const increment = incrementFactory()
increment()
increment()
increment()


ケース02・・・動的関数

function addNumberFactory(num) {
    function addNumber(value) {
        return num + value;
    }
    return addNumber;
}

const add5 = addNumberFactory(5);
const result = add5(5);
const result = add5(10);


変数numを固定した関数を生成できます