《Javascript》クロージャについてわかりやすく解説

JavaScript

クロージャを理解するために必要な知識

Callオブジェクト

ローカル変数は関数が実行された際にCallオブジェクトと呼ばれるプログラマからは見えないオブジェクトが生成されます。このオブジェクトには以下の内容が含まれます。

その関数内のローカル変数の値

関数に渡された引数名とその値

引数情報を管理するオブジェクト(arguments オブジェクト)

this

親の Call オブジェクトの場所

参考サイト

JavaScript のスコープチェーンとクロージャを理解する - tacamy--blog
前回で JavaScript のスコープの基本がわかったので、今回はスコープチェーンとクロージャを勉強してみました。 Call オブジェクトとクロージャの理解がかなり大変でした・・。 変数オブジェクト JavaScript で変数の宣言と参照をするということは、変数オブジェクトを読み書きするということです。 変数オブジ...

Callオブジェクトは関数の処理が終了すると削除されます。

スコープチェーン

グローバル変数とローカル変数で名前が重複した場合に、正しい参照先を調べる方法をスコープチェーンと言います。値を調べる手順としてはCallオブジェクトを1つ1つ調べていきます。

筆者
筆者

Callオブジェクトがそれぞれ繋がって一本の鎖に例えられることからチェーンという用語が使われているんだと思います。

クロージャとは何か

ある関数が定義された際の「環境」を保持しているとき、その関数をクロージャと呼びます。具体的に説明すると、ある関数がスコープチェーンによって外側にある変数への参照を保持しているとき、その関数はクロージャといえます。

引用:「JavaScriptのクロージャの仕組み」

JavaScriptのクロージャの仕組み
JavaScript にはクロージャという仕組みがあります。ここでは、JavaScript における基本的な仕組みについて説明します。 クロージャとは ある関数…

大前提としてクロージャはある指定の条件を満たす関数のことを指しています。この条件はコードを見ながら理解しましょう。

クロージャの例

以下のコードがクロージャの例です。関数内の戻り値に無名関数が指定されていますがこれがクロージャです。クロージャ内でnumという変数が使用されていますが無名関数内で定義されたものではないのでスコープチェーンをつかって外側のCallオブジェクトから引数を参照しています。

クロージャをつかうと関数内の変数の値を保持できていることが確認できます。

クロージャのメリット

クロージャのメリットは大きく以下の2点です。

・グローバル変数の数を削減できる
・関数内の変数値を保持できる

筆者
筆者

以上でクロージャの基本的な部分についての解説は終了です。最後まで読んでいただき本当にありがとうございます。

エンジニアにおすすめのアイテム

記事の内容とは別に、僕自身が保有する業務効率アップ、スキルアップを後押しするお勧めアイテムを紹介します。割とガチでお勧めなのです。

目の保温マッサージ

エンジニアの1日の業務は大半がディスプレイと睨めっこ。帰宅すると目が疲労で非常に重くなります。ひどい時は軽い頭痛になったりと結構深刻。そこで僕自身が毎日使っているのが目元マッサージ機です。

アイマッサージャー 二年間保証 最新グラフェン加熱技術 目元マッサージャー

アイマッサージャーを使ってから、翌日の疲労感がだいぶ軽減されました。またマッサージ自体とっても気持ち良くて、布団に入るのが毎日楽しみになりました。コスパまじで最強アイテムです。

座椅子をゲーミングチェア風に

ディスプレイの長時間利用と同時にエンジニアは座椅子の上に何時間も座る運命にあります。椅子が快適だと疲労度が大きく変わると思った私は以下の2点のアイテムを購入しました。

IKSTAR クッション 低反発 座布団 第五世代 オフィス IKSTAR クッション 低反発【メーカー直営・1年保証付】 ランバーサポート

気に入りすぎて、オフィス用だけではなく、自宅用も購入してしまいました。導入してから長時間座ることでのお尻の痛みや、腰の痛みが激減しました。なので体の健康を考えるなら、導入するべきアイテムですね。

タイトルとURLをコピーしました