タグ

JavaScriptとスコープに関するkutakutatriangleのブックマーク (3)

  • 回答:どれが「クロージャ」でしょうか? - hogehoge @teramako

    問題:どれが「クロージャ」でしょうか? - hogehoge の回答 期待させて申し訳ないですが、はっきりとした解等を定めていません。ということで解答ではなく、回答で。 クロージャの定義を以下の様に定めました。 引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。 クロージャ - Wikipedia JavaScriptの関数オブジェクトは定義時にスコープを定めてチェーンを形成します。このチェーンが変化することはありません。上記定義の言葉通りに考えるならば、答えは6, 7, 9以外の全てになると思います。 ただし、よくある説明では、関数の中で定義される関数オブジェクトのみを「クロージャ」と呼んでいる様に思えます。 var scope = "global"; function func1 () { return scope; } fun

    回答:どれが「クロージャ」でしょうか? - hogehoge @teramako
  • JavaScriptの関数(ラムダ関数とかクロージャーとか) - hogehoge @teramako

    知ってて当然?初級者のためのJavaScriptで使う即時関数(function(){...})()の全て - 三等兵 はてなブックマーク - 知ってて当然?初級者のためのJavaScriptで使う即時関数(function(){...})()の全て - 三等兵 知ってて当然?初級者のためのJavaScriptで使う即時関数(function(){...})()の全て - 三等兵の記事を読んだ後に当記事を読むこと推奨。 ブックマークコメントを見ていて、用語の使い分けが気になったので書いておこうと思う。 無名関数かクロージャーが一般的じゃないのか?即実効関数とか使い捨て関数なんて初めて聞いた。 「即時関数」を言い表したいときに「匿名関数」とか「クロージャー」というのは不相応。 「匿名関数」 これは単に名前の付いていない関数を表す言葉であって、定義後に即実行する関数を指すとは限らない。また、記

    JavaScriptの関数(ラムダ関数とかクロージャーとか) - hogehoge @teramako
  • JavaScript のスコープを理解する - tacamy--blog

    スコープとは、変数の有効範囲のことで、プログラムのどの場所から参照できるかを決める概念です。 スコープの種類 JavaScript のスコープには、グローバル変数とローカル変数の 2 種類あります。 グローバル変数 ローカル変数 関数の外(トップレベル)で宣言した変数 関数の中で宣言した変数, 関数の仮引数 プログラム全体から参照できる その関数の中でのみ参照できる ブロックスコープは存在しない Java などの言語では、if や for などの {} で囲まれたブロックごとにもブロックスコープがありますが、JavaScript には存在しません。 JavaScript でどうしてもブロックスコープを使いたい場合は、with 命令を使う方法や、無名関数を定義と同時に呼び出すなどの方法で、擬似的にブロックスコープを作ることは可能です。 補足 : let を使うとブロックスコープがつくれると教

    JavaScript のスコープを理解する - tacamy--blog
  • 1