JavaScriptエスケープ


護衛とは何ですか?

변수 선언이 함수 또는 전역 코드의 상단에 이동하는 것のような行為を吊り下げと呼ぶ.
ここで学ぶ主な概念の中で、2つの語に集中したほうがいい.
  • 宣言:実行コンテキスト(実行コンテキスト)で作成されます.
  • 初期化:この値の読み取りを許可します.
  • 割り当て
  • :宣言された関数または変数に値を割り当てます.
  • ハウスティンの相手はどれらがありますか?


    関数宣言(function)

    function z() {}関数は反発し、宣言と割り当てが同時に発生します.
    この場合、関数宣言式を他の関数式と混同することはできません.
    (A.関数式)var z = function() {}(B.矢印関数)const z = () => {},
    (A)変数に割り当てられた関数式は割り当てられません.理由は文章の下部の変数宣言記号からわかります.
    (B)も同じ理由で選ばれ、発表されただけで3つの違いがあります.
    3つの違いは以下の通りです
  • Nothis/Lexicalthis
  • Noプロトタイプ(ジェネレータとして使用できません)
  • No Propsはargumentsと名付けられています(argumentsではアイテムを入手できません).
  • 宣言変数(var、let、const)


    多くの文章は、入る前にvarだけが見られ、letとconstは見られないと言っています.ある意味では、現象はそう見えるかもしれません.
    すべてのシースが適用され、TDZが参照できるかどうかの違いがあります.
    以下の3段階に分けて説明する.
    1)メモリに初期起動として登録する場合
    2)中間-メモリ登録と実際のコード位置の間
    3)コード-実際のコードの位置

    var

    var a = 1;1)初期化-シース宣言(a)、初期化未定義
    2)中間-a呼び出し、未定義
    3)コード-値(1)配分

    let

    let b = 1;1)初期化-シース宣言(b)、初期化されていません.
    2)中間-b呼び出し時に参照エラー(TDZ)
    3)コード-初期化し、値を割り当てます(1)

    const

    const c = 1;1)初期化-シース宣言(c)、初期化されていません.
    2)中間-c呼び出し時に参照エラー(TDZ)
    3)コード-初期化し、値を割り当てます(1)
    コードから見ると、分かりやすいようです.
    console.log(a); // undefined
    console.log(b); // Reference Error
    console.log(c); // Reference Error
    
    var a = 1;
    let b = 2; // End of TDZ (for b)
    const c = 3; // End of TDZ (for c)
    このコードを見ると疑問に思うかもしれません.letとconstは何が違いますか?
    varを含めて、簡単に説明すると、再宣言、再割り当て、範囲に違いがあります.
    varは再宣言したり、再割り当てしたりすることができます.範囲はFunctionです.
    letは(X)を再宣言することはできず,(O)を再割り当てすることができる.範囲はblockです.
    constは(X)を再宣言することはできず、(X)を再割り当てすることはできません.範囲はblockです.
    コードを見てみましょう.次のようにします.
    var a = 1;
    var a = 2; 	// (O) 재선언
    a = 3; 		// (O) 재할당
    
    let b = 1;
    let b = 2; 	// (X) 재선언, SyntaxError
    b = 3 		// (O) 재할당
    
    const c = 1; 
    const c = 2; 	// (X) 재선언, SyntaxError
    c = 3;		// (X) 재할당, SyntaxError

    の最後の部分


    オブジェクトをcontとして宣言すると、オブジェクトの内部内容を変更できます.Object.freezeにより厳格モードでこのような状況を防止することができる.Object.freezeは浅いフリーズなので、object内部のobjectを深くフリーズするには、すべてのobjectを再帰的にフリーズする必要があります.
    知っていることをもとに書き、ついでに復習して、MDNや様々なサイトを参考にして、新しい内容に対する感覚がますます強くなってきました.

    リファレンス


    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/const
    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze