var,let,const

 ECMAScript 2015 (ES6)から、letとconstが加わり、
 letはvarに代わるブロックスコープに対応した変数定義用、今後varは非推奨になるのでletを使うべき
 constはブロックスコープに対応した定数定義用
 

再代入

  var,letは再代入可能、constは不可

   var testVar = '1回目の代入';
   testVar = '2回目の代入';
   console.log(testVar);

 

再宣言

  varは再宣言可能、let,constは不可

   var testVar = '1回目の宣言';
   var testVar = '2回目の宣言';
   console.log(testVar);

 

ブロックスコープ

  let、constはブロックスコープに対応、varはしていない。

関数定義

 出典:【JavaScript】関数定義いろいろ
 主に次の3種類

関数コンストラクタ

 あまり使うべきではないらしい

   var addConstructor = new Function('x', 'y', 'return x + y');
   console.log(addConstructor(1,2)); // 出力:3
関数式(関数リテラル)

 無名関数を使用したもっとも使われる形

   var addres = function (x, y) {
     return x + y;
   };
   console.log(addres(1, 2)); // 出力:3

 関数名をつけると再帰が可能になる

   let addres = function hoge(x) {
     console.log(x);
     x--;
     if(x<0){return;}
     hoge(x);
   };
   addres(5); // 出力:5 4 3 2 1 0
関数宣言

 関数式とほぼ同じだが、「ホイスト」が行われているのが特徴
 つまり関数宣言の前に関数呼び出しが可能

   console.log(add(1, 2)); // 出力:3
   function add(x, y) {
     return x + y;
   };