JavaScript

JavaScript 関数式、無名関数

投稿日:

さて、前回は「関数宣言」でした。

JavaScript 関数宣言

今回は「関数式」です。これは無名関数とか、無名関数式という呼ばれ方もします。

サンプルをみていきましょう。

[1]の内容は、plus1 という変数に 関数式 の内容を代入しています。そして、console.logの所で実行することで値を取得しています。変数に関数を代入するタイプのものが「関数式」です。これは「関数宣言」と、似てはいるけど、別物という扱いになるわけです。

「関数宣言」のページと比較して見比べてみておいてください。

[2]では [1] の機能とほとんど同じものを少し変えて書きました。plus2 という変数に plusXXX という名前の関数式を代入しています。

ここでは名前をつけて書いてみましたが、ほとんどの場合においてはこの[2]のような「関数式」に名前をつける、なんていうコードは書きません。関数式に名前をつけてもほとんどの場合は意味がないからです。function plusXXX のところを、別の名前の関数式に変えてみてもらっても、変数 plus2 に代入してしまえば、同じです。

「無名関数」とか「無名関数式」と呼ばれるものは、[1]の形式のものです。[2]は「名前あり関数式」となります。ただし[2]はほぼ使われません。[1]だけです。ということで、JavaScriptの場合は、無名関数=関数式ということになります。少しややこしい話なのですが、他の言語では「関数式」という言葉ではなく「無名関数」という言葉がつかわれるのでこのようなことになっています。

他言語(C#とか)で「無名関数」と呼ばれる機能はJSでは「関数式」と呼ばれる、という理解でよいです。

さて[3]ですが、これはエラーになってしまいます。前回ページの「関数宣言」と比べてみてください。関数宣言の場合は、宣言が上で書かれていても、下で書かれていても、動きました。「関数式」の場合は、そうはいきません。

変数に代入されてから、その変数を使うので、変数に代入されていなければ動かないのは当たり前のこと、ということになります。

これが、関数式です。

-JavaScript

Copyright© プログラミングアカデミー ゼロプラスワン , 2019 All Rights Reserved Powered by STINGER.