JavaScriptのクロージャのお話を聞く機会があり、理解していたつもりだが深くはできていなかったことに気づいた
なので、自分でももまとめてみる
Closure(関数閉包)
▼閉じた関数
自分が定義した引数/変数だけを使っている関数
function f (x, y) { const z = x + y return z }
▼開いた関数
自分が定義した引数/変数以外を使っている関数
function f (y) { const z = x + y return z }
▼クロージャ(関数閉包)
開いた関数が環境に包まれて閉じられる関数
let x = 1 function f (y) { const z = x + y return z }
環境とは
レキシカルスコープとは
- スタティックスコープとも呼ばれる
- ソースコードから静的に定まる
- JavaScriptの基本はレキシカルスコープ
let x = 1 export const f = (y) => { return (z) => x + y + z }
ダイナミックスコープとは