16.関数式


関数はJavaScriptで値として扱われます.
したがって、関数は変数に割り当ててコピーすることもできます.
次のコードは変数割当て関数です.
let hello = function() {
  console.log('hello');
}
関数は値で、変数に割り当てることができます.
関数を作成し、変数helloに割り当てます.
console.log(hello);
関数helloをコンソールに印刷すると、定義されたコードが文字列に変換されて出力されます.すなわち,関数自体も他のデータのように値として用いることができる.しかし、他の価格とは違うところもあります.
それは呼べる.
しかし、これ以外は値が同じなので、他の値でできることは、関数でも同じことができます.
次のコードを表示すると、関数も値のようにコピーされることがわかります.
function hello() {
  console.log(hello);
}

let cloneHello = hello;

hello(); // hello
cloneHello(); // hello

関数の式の末尾にセミコロンがありますか?


if {...}, for{...}, function temp{...}使用等中括弧のblock末尾には、;は不要です.
しかし、関数式の役割は、変数にを割り当てることである.
すなわち、大かっこを使用しているが、それ自体が値であるため、一般的な文法の末尾に;が貼り付けられ、;と同じになる.式なので文法とされているので貼り付けた方が良いです.

コールバック関数


関数をパラメータとして渡す場合、渡す関数をコールバック関数と呼びます.
function zeroNum(number, ok, sorry) {
  number===0 ? ok() : sorry();
}
関数のパラメータはok,sorryです.
条件に応じてパラメータを実行します.
ここでokとsorryは関数の値を受け入れなければならない.
これをコールバック関数と呼びます.

匿名関数


パラメータで関数を入れると、生成して入れます.
これを匿名関数と呼び、以下に示す.
function zeroNum(number, ok) {
  number===0 ? ok() : console.log('no Zero');
}
zeroNum(0, function() {
  console.log('It`s Zero!');
});
パラメータとして値を入力すると、そのパラメータに宣言されます.
匿名関数は変数に割り当てられるものではなく、外部からアクセスできません.
匿名関数は、その意図に基づいて作成および使用する必要があります.
通常、コールバック関数に渡される関数を記述するために使用されます.

宣言vs式

  • 文法が違います.
  • 関数の生成期間が異なる
    -->式は、実行フローが関数に到達したときに関数を生成しますが、宣言文はその前に呼び出されます.(がんばって)
    JavaScriptを実行する前に、グローバルに生成された宣言を検索してから、宣言を生成するアルゴリズムがあるからです.
  • scopeの違い
    -->式は、この関数を変数に含めて使用できます.すなわち,ブロック内で生成された関数をグローバル変数に含め,ブロック外でも使用できるが,宣言は使用できない.