TIL Day-11


11日目


JavaScriptエンジンについて詳しく学びました.
一日のほとんどの時間は質問回答です.
理解がそんなに難しい.
明日CSSを勉強します.
今日習ったことはもうちょっと整理してから寝ます.

新学の品

  • 元データ(Primitive data)、参照データ(Reference)
  • 以前作成したJavaScriptドキュメントvarを使ったものを見たことがあるかもしれません.
    当時,変数の使用範囲は関数単位であった.
    変数の使用範囲が広い
    ブロック単位の関数として使用
    私の知る限りでは単独で作って使っています.
    この改良された変数宣言方式letおよびconst.letと異なり、varは再宣言できません.
    変数にはデータが含まれます.
    再宣言はできませんが、再割り当てできます.
    元のデータの変数を変更できるのが特徴です.
    let hello = 'world'
    hello = 'good morning'
    
    console.log(hello) // output: 'good morning'
    
    let hello = 'hi' // output: SyntaxError
    // 크롬 개발자 도구에선 개발 편의를 위해 재선언이 가능하다고 한다.
    // JSbin등 다른 툴에서는 에러가 뜨는걸로 확인됐다.
    constも同様に再宣言できません.
    参照型データ(配列、オブジェクト、関数)を削除する変数を追加できます.letと異なり、再割り当ては不可能です.
    const array = [1, 2, 3, 4, 5]
    array.pop()
    console.log(array)  // output: [1, 2, 3, 4]
    
    array = [a, b, c ,d, e] // output: ReferenceError
    ここで初めて理解できなかったのはconst
    変数が再割り当てできないことを知っています.
    配列やオブジェクトの変更性が理解できません.

    変数のデータ格納方法はこうです
    変数の元のデータは、コールスタックに直接格納されます.
    参照データは、Heapというリポジトリに格納されます.
    したがって、constで参照データを変更することができる.
    元のデータは変更されません.
    原本の住所をコピーして変更できるからです.constに他の参照データのアドレスを割り当てる場合は、もちろんだめです.
  • 浅いコピー、深いコピー
  • 浅いコピーとは、AオブジェクトをコピーしたBオブジェクトのことです.
    Bオブジェクトの要素が変更された場合
    Aオブジェクトで変更されていない
    深度コピーとは、AオブジェクトをコピーしたBオブジェクトのことです.
    Aオブジェクトの要素が変更された場合
    Bオブジェクトでの変更
    浅いコピーの値は結果的に同じです.
    その住所はもう一つと言える.
    したがって、constで参照データを変更することができる.
  • スキャン、エンクロージャ
  • スタンダードは変数の活動範囲であると考えられる.
    どこで発表しましたか.どこで参照できますか?に従って
    変数の範囲が決まり、変数の範囲は大きく2つに分けることができます.
    関数外で宣言されたグローバル変数と
    関数で宣言された領域変数.
    前述したvarを関数スキャンと呼ぶ.
    関数内で使用できます.基本的にはグローバル変数です.
    Javascript自体が拡大している間に関数の中に入っているから?
    思い出せないけどそう言ってるみたい
    では、私たちが使っているletconstは何ですか?
    どちらもブロックスキャン(Block Scope)です.
    ブロックの使用範囲があります.{여기서부터 여기까지}従って,この2つは基本的に領域変数と見なすことができる.
    関数以外で宣言する場合...
    このときモジュールの概念が生成され、定義概念はこのようになります.
    関数と宣言関数の語彙環境の組合せ
    うん.関数じゃないの...?そう言ってもいいですが、違うと言えば
    内部関数が外部関数にアクセスできる変数を示します.
    もっと簡単に言えば、そう言えます.
    中から外が見えます.
    外には中が見えない.
    それ以外に、Closerの解釈方法がわかりません.
    今日は本当に難しい概念をたくさん学びました.
    よく知っていればJavaScriptドキュメントの作成に役立つことを忘れないでください.