5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

いよいよ「クロージャとは何か」という質問に答えよう。(読書メモ)

Last updated at Posted at 2016-09-13

 JavaScriptの「クロージャ」の定義を クロージャを一言で表すと (読書メモ) にてメモしましたが、今読み進めている別の良書でも見つけたので、こちらも備忘のため書き写しておきます。

 以下のサンプルコードおよび説明は、オライリー刊シングルページWebアプリケーション P.60 第2章 2.6.3.1 「クロージャとは」からの引用です。

var prison = (function() {
    var prisoner = 'Josh Powell';

    return {
        prisoner: function() {
            return prisoner;
        }
    }
})();

//「Josh Powell」と出力する
console.log(prison.prisoner());

いよいよ「クロージャとは何か」という質問に答えよう。クロージャは、変数を作成した実行コンテキスト外から変数にアクセスできるようにしておくことで、ガベージコレクタがメモリから変数を削除しないようにするプロセスである。クロージャは、prisonオブジェクトにprisoner関数を格納したときに作成される。(ガベージコレクタがprisoner変数を削除するのを防ぐ) 現在の実行コンテキスト外からのprisoner変数への動的アクセスを伴う関数を格納することで、クロージャは作成される。

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?