[Javascript]関数宣言vs関数式(Javascriptの理解と書き出し)-3


今度はどう見ても何の考えもない.スキップ可能な関数宣言文と関数式について説明します.

関数宣言?式。


関数宣言とは、次の形式を指します.
function sum(a, b) {
  return a + b;
}
次に、関数式は次のようになります.
const sum = function(a, b) {
  return a + b;
}

何が違うの。


JavaScriptエンジンが関数を生成するタイミングは異なります.
関数式は、実際に実行されたストリームが関数に到達したときに関数を生成します.
関数宣言を定義する前に、関数宣言を呼び出すこともできます.
sum(1, 2); // 3

function sum(a, b) {
  return a + b;
}
sum(1, 2); // error!

const sum = function (a, b) {
  return a + b;
}
もう1つは、厳密モードでは、関数宣言がコードブロック内にある場合、その関数はブロック内の任意の場所でアクセスできますが、ブロック外で関数にアクセスできません.
if (true) {
  function welcome(){
    console.log('Welcome!');
  }
}
welcome(); // error!
もちろん、関数式は、ブロックの外で変数を事前に宣言することができます.
let welcome;
if (true) {
  welcome = function() {
    console.log('Welcome!');
  }
}
welcome(); // Welcome!