LotusNotesな日々IBM社のLotusNotesに関係する何かを日々語ってるようなきがしないでもないブログです。 

スポンサーサイト

   ↑  --/--/-- (--)  カテゴリー: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(記事編集) http://mesosune.blog123.fc2.com/?overture" target="_new

--/--/-- | Comment (-) | HOME | ↑ ページ先頭へ |

【JavaScript】無名関数とは?

   ↑  2013/05/08 (水)  カテゴリー: JavaScript/CSS
今回は無名関数(匿名化数)の話。

無名関数の良い所は、
関数名が他の関数や変数名とかぶっていないかどうかを気にしないで良いことかと思います。
一度しか利用しない、イベント処理やコールバック関数等に使います。

無名関数の説明といいつつ、
実はクロージャの考え方の基礎とやりかたに話をつなげていますので、
興味がありましたらクロージャで検索してみてください。

では以下少し説明してみます。

通常、JavaScript関数は
function fncname( 引数 ){ 処理 }
と記載しますが、

function( 引数 ){ 処理 }
とも記載できますよ、
というのが無名関数と呼ばれるものです。

また、JavaScripiは
関数を代数にそのまま突っ込むことが出来るという仕様を持っているので、
無名関数を代入してやって、

var fnc = function( 引数 ){ 処理 };

ということができます。
これで関数を変数の名称で呼び出すことが出来ます。
この関数を値として表現することを関数リテラルと呼びます。

さらにおもしろいことに、
JavaScriptはfunction(){}もオブジェクトとして認識しているがゆえに、
関数リテラルは変数に代入せずに直接呼び出すこともできます。

var fnc = ( function( 引数の要素名 ){ 処理 } )( 引数の値 )

※サンプルを記載してみます。
var fnc = ( function( x , y ){ x - y ; } )( 10 , 9 );
alert( fnc );

この書き方でやりますと、
function の結果が fnc に格納されます。

少しややこしいでしょうか。

少し婉曲しますが、
最初のうちは、

var fnc = function( 引数 ){ 処理 }
だと、fncが関数名となる。

var fnc = (function( 引数の名前 ){ 処理 }( 引数の値 )
だと、fncに無名関数の結果が入る。

と覚えると楽だと思います。

※クロージャ(closure):閉包。レキシカルクロージャ。
静的スコープを実現するための仕組みで、
関数内に出現する自由変数(関数内で宣言されていない変数)の解決の際、実行時の環境ではなく、
関数を定義した環境の変数を参照できるようなデータ構造のこと。
もっと噛み砕いてわかりやすく言えば、
自分を囲むスコープにある変数を参照できる関数のこと。
スポンサーサイト

(記事編集) http://mesosune.blog123.fc2.com/blog-entry-395.html

2013/05/08 | Comment (0) | Trackback (0) | HOME | ↑ ページ先頭へ |

Comment

コメントを投稿する 記事: 【JavaScript】無名関数とは?

お気軽にコメントをぞうぞ。
非公開 (管理人のみ閲覧可能なコメント) にしたい場合には、ロック にチェックを入れてください。

  任意 : 後から修正や削除ができます。
  非公開コメントとして投稿する。(管理人にのみ公開)
 

Trackback

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。