タグ

2014年4月1日のブックマーク (4件)

  • JavaScriptでクロージャ入門。関数はすべてクロージャ? - Qiita

    JavaScriptでは関数はすべてクロージャです。 ではそもそもクロージャってなんなんでしょうか。 クロージャ?? クロージャの簡単な定義として 「自分を囲むスコープにある変数を参照できる関数」 が挙げられます。 言葉ではパッとしないかもしれませんが、コードを一つづつ追っていくと、 入門としてのクロージャは簡単に理解できます。 スコープ まずJavaScriptは関数ごとにスコープが作られます。 スコープとは変数を参照できる範囲のことです。 その範囲外では変数は参照できません。 function func() { var value = 1; console.log(value); } func(); // 1 console.log(value); // undefined

    JavaScriptでクロージャ入門。関数はすべてクロージャ? - Qiita
  • JavaScriptで関数型プログラミングの入門 - Qiita

    【他キーワード】 第一級関数(高階関数が扱える) カリー化(部分適用) 型推論 気をつけるべきは三点 JavaScriptで関数型を考えるにあたっては、 抑えるべきポイントは下記三点となります。 すべての関数が値を返す 関数に副作用がない(参照透過) 関数を値として扱える 関数型として気をつけることはほかにもあるのですが、 入門として今回は扱いません。 すべての関数が値を返す 関数がすべての値を返すようにします。 // Good function hello() { return 'Hello' } console.log(hello()); // Hello // Bad function hello() { console.log('Hello'); } hello();// Hello これによりその返り値を利用し、さらに関数を組み立てていきます。 関数に副作用がない(参照透過) 簡

    JavaScriptで関数型プログラミングの入門 - Qiita
  • Life is beautiful: Javascript、クロージャを使ったプライベート関数の隠蔽について

    (このエントリーは「Javascriptクイズ:無名関数と実行効率の話」の続編。) 「???」と頭をかしげる太郎に、「じゃあ、これだったらどうかな?」と三郎はコードを書き始めます。 function code2name(code) { var mapping = { 'us': 'United States', 'ja': 'Japan', 'ko': 'Korea', 'ru': 'Russa', 'uk': 'United Kingdom', 'fr': 'France', 'cc': 'China', 'gw': 'Germany' }; return mapping[code] || '(unknown)'; } 「カントリーコードを国名に変換しているんですね。」と太郎。 「どこが問題だか分かる?」 「うーん、マッピングのためのオブジェクトを毎回作り直しているところかな。」 「そう

  • 食べられないほうのカリー化入門 - Qiita

    『カリー化』(Currying) という概念をご存知でしょうか。"Curry" はべ物のカレー(Curry)と同じスペルですが、ここでいう Curry はそれとは別のもので、多くのプログラミング言語に応用できるかもしれない、とても便利かもしれない概念です。 では教えてくれ。”カリー化”とはなんのことだ? 『ふたつの引数のうち、大きい方の数を返す』という機能を持った関数 max を実装したいとしましょう。そのようなとき、大抵は次のように定義すると思います。 この関数 _max も『大きい方の数を返す』という機能を持っていますが、_max は max とは呼び出し方が少し異なります。たとえば、_max で 1 と 2 のうち大きい方を求めるには、 _max(1)(2) のように書きます。 _max が通常の max と異なるところは、関数を呼び出すときに引数をひとつづつ渡すようになっていると

    食べられないほうのカリー化入門 - Qiita