For Want Of A Better Word

javascriptの関数リテラル | 変数に無名関数をセットするやつ

      2015/04/19

【参考】http://news.mynavi.jp/column/js/001/index.html

var mtof = function(x) { return x*3.2808399 }
mtof(3);

無名関数をリテラル変数にセットするというやつ。
実行結果をリテラル変数にセットいているのではなく、関数への参照を渡している。
なので、あとで「mtof(3)」というように、実行をしている。

一行で実行して、戻り値だけを取得する場合は、下記のように最後に「()」をつけてしまう。

var mtof = function(x) { return x*3.2808399 }(3);

この時は、関数参照ではなく、実行結果が得られるので注意。
このあとでmtof(3)とかしてもエラーとなる。

■なぜこんな書き方をするのか!!

①無名関数自体のメリット
(1)命名する必要のない関数をシンプルに記述できる。
(2)既存のネームスペースとの衝突を回避できる。

(2)は理解できる。
(1)は命名する必要のない関数というのが、まったく意味が分からないので、メリットとは理解できない。
⇒命名する必要のない関数っていうのは。。⇒名前空間を汚さないためだけの関数ということ?

ここはもっとがっちり、実際にjs開発したときにわかるのかな。。

 - 未分類

  関連記事

no image
ld-linux.so.2ってなんだ?わからん…

CentOS6系にとある古いパッケージをインストールしたときに、「ld-linu …

no image
hostsとnslookupとpingの微妙な関係

hostsにIPとホスト名のひも付を設定して、nslookupで確認していたけど …

no image
Firebug (ver 2.0.1)からjavascriptの実行

Firebugのバージョンが上がってから、なんか前に書いた記事とやり方が変わって …

no image
コピーライトって書く必要あるの?

なんと無く書いているけど、疑問に思ったのでちょっと調べた。 参考サイト: htt …

no image
ラッパー

あるクラスや関数、データ型などが提供する機能やデータを含み、別の形で提供するもの …