JavaScriptでは、関数は “魔法の言語構造” ではなく、特別な種類の値です。
前に私たちが使っていた構文は 関数宣言 と呼ばれます:
function sayHi() {
alert( "Hello" );
}
これとは別に、関数式 と呼ばれる、関数を作るための別の構文があります。
それはこのようになります:
let sayHi = function() {
alert( "Hello" );
};
ここでは、関数は他の任意の値と同じように明示的に変数に代入されています。どのように関数が定義されても、それは単に変数 sayHi に格納される値です。
これらのコード例の意味は同じです: “関数を作成し、変数 sayHi にそれを格納します”
alert を使ってその値を出力することもできます:
function sayHi() {
alert( "Hello" );
}
alert( sayHi ); // 関数のコードが表示されます
sayHi の後に括弧がないので、最後の行は関数は実行されないことに注意してください。関数名への言及がその実行となるプログラミング言語も存在しますが、JavaScriptはそうではありません。
JavaScriptでは、関数は値です。そのため、それを値として扱うことができます。上のコードはその文字列表現を表示します(それはソースコードです)。
sayHi() のように呼ぶことができる点で、もちろんそれは特別な値です。
しかし、それは値なので、他のタイプの値のように扱うことができます。
関数を別の変数にコピーすることができます: