js - part1. データ型、データ型、let vs var、昇格


JS-データ型、データ型、let vs var、昇格
  • let(ES 6に追加)
    -varを使う習慣を捨てるべきだ.
    -letの場合
  • <script>
    console.log(age);
    age = 4;
    </script>
    
    --> - let의 경우 :: 선언되지 않은 변수기 때문에 에러가 난다.(정상)
    --> - var의 경우 :: 선언되지 않았지만 undefined라고 출력.(var hoisting)
  • 吊り下げとは何ですか?
    宣言がどこにあるかにかかわらず、宣言を一番上にしなければならない.
  • Block scope
  • <script>
    {
      age = 4;
      let age;
    }
    </script>
    
    --> 변수 사용 범위가 블럭 안으로 제한 
    しかしvarではblockscopeは通用しません.
    <script>
    {
      age = 4;
      var age;
    }
    console.log(age);
    </script>
    
    --> var의 경우 어디서나 4 출력 가능..
    規模のあるプロジェクトではvarを使用するとカオスが発生します.変数が重なる...リスク負担.
  • const
    不変の値
    変更しないデータ型を使用するには、値を指定することをお勧めします.
  • variable types
    number, string, boolean
  • boolean
    -false = 0, null, undefined, NaN, ''
    -true=その他
    ex) const a = true;
    const b = 3 < 1;//false
  • null:故意にNULL
    let nothing = null;
    console.log( value: ${nothing}, type: ${typeof nothing} )
    //value: null, type: object
  • undefined:NULLか値が含まれているか分からない状態
    let x;
    console.log( value: ${x}, type: ${typeof x} )
    //value: undefined, type: undefined
  • シンボル:一意の識別子が必要な場合に使用します.
    同時に多発イベントが発生した場合、優先順位を付けたい場合、固有の識別子が必要な場合に使用します.
    stringも使用される場合があり、同じstringであれば同じ識別子とみなされるという問題があります.
    ただし、symbolでは、同じ構成部品を作成しても区別できます.
    ex) const symbol1 = Symbol('id')
    const symbol2 = Symbol('id')
    console.log(symbol1 === symbol2);
    //false
    同じエレメントで同じ識別子を作成したい場合は?
    ex) const symbolA = Symbol.for('id')
    const symbolB = Symbol.for('id')
    console.log(symbolA === symbolB);
    //true
    またsymbolは出力中にエラーが発生するので後で出力はdescriptionを加えて変換してのみ出力されます.
    console.log( value: ${symbol1.description}, type: ${typeof symbol1.description} );
    //value: id, type: symbol