TIL 2022-02-23


先端雇用の準備
変数の宣言
📕 値を格納するために準備された記憶プロセスは、取得されたメモリ領域を名前付きメモリ領域に関連付けることである(name binding).
Linkeu ES 6以前は変数宣言時にvarキーのみ使用していましたが、ES 6以降はconstとlet、constとletはいつ使用すれば良いのでしょうか?varはありますか?🤔
100 constとletおよびvarの違いを理解するためには,まずいくつかの概念を定義する.
𕼣1:キーワードvar,シーケンス宣言の実行点と変数反発
(1)ソースコード評価中にすべての宣言を実行する(変数宣言、関数宣言など...)
(2)宣言以外はソースコードを行単位で実行
もちろん、ソースコードが順次実行される実行時に変数宣言を実行すると、次のコードはreferenceErrorを出力しますが、jsエンジンは(1)のように先に宣言を実行するので、次の結果はundefinedを出力します.このように、先に宣言を実行することを「がんばれ」と呼ぶ.
コード1
console.log(test); //undefined
var test;
もちろん、var、let、const、function、classキーワードを使用するすべての識別子は、変数宣言を除いて反発になります.
コード2
console.log(test); //undefined
var test = 80;
console.log(test);//80
前述したように、変数宣言と値を1つの文として表しても、JavaScriptエンジンは宣言と値の割り当てを2つの文に分けて実行します.下図に示すように、未定義のメモリ領域に1回格納し、値80を格納する新しいメモリ領域を取得する.したがって,コード3も同様の結果を生じる.

コード3
console.log(test); //undefined
test = 80;
var test;
console.log(test);//80
次のように再割り当てすると、次のように新しいメモリ領域が得られます.
コード4
var score = 80;
score=180;

✔このような誘導によりエラーが発生することはありませんが、プログラムの流れに合わず、可読性が低下し、エラーが発生する余地が残っています.
❗変更不可の値であれば変数ではなく定数(constant)であり、上記のconstキーワードはこれらの定数を宣言するために使用されます.
𕼤2:スキャン
その名の通り、変数の範囲(scope)です.
let i = 1; //전역 스코프

function test(){ //함수스코프 시작
  let i=10;
  for(let i=0; i<3; i++){ //블록 레벨 스코프 시작
    console.log(i); // 0 1 2
  }//블록레벨 스코프 끝
  console.log(i); //10
}//함수 스코프 끝

test();
console.log(i); //1 
varキーワードとして宣言された変数は、関数コードブロックがドメインscopeであることのみを認めるため、関数外部で宣言されたvarキーワード変数は、コードブロック内で宣言されてもグローバル変数となる.
var x = 1;
if(true){
  var x = 10; 
}
console.log(x); //10
var i = 10;
for(var i=0; i<5; i++){
 console.log(i); //0 1 2 3 4 
}
console.log(i);// 5
最後に,これらの欠点を克服するために,新しい変数宣言キーワードletとconstを導入した.
✨ let
  • 変数繰り返し宣言時に構文エラーが発生する
  • ブロック級のスキャナーを備えています.
  • let a = 1;
    {
     let b =2; 
    }
    console.log(a); // 1
    console.log(b); //referenceError b is not defined
    ✨ const
  • ビットで述べたように、constは可変定数を宣言するためのキーワード
  • である.
  • 宣言と同時に初期化する必要があります.そうしないとsyntaxErrorが表示されます.
  • letと同様にブロックレベルスキャンを有する.
  • もちろん
  • の再割り当ては許されない.
    結論:それはどうですか.🤔
  • ES 6を使用するとvarは使用されません.
    これはGoogleドキュメントにも記載されている内容です.( リファレンス )
  • なので、後で再配分すべきかどうか分かりません.
    ->実はこれもよくわからないので悩んだことがあります.モダンjavascript Deep Diveの著者は、変数を宣言する際にconstキーワードを最初に使用するよりも簡単な答えを示した.つまり、後で再割り当てが必要な仕事があったり、エラーが発生したりした場合は、letに変えても遅くはありません.
  • REFERENCE
    Google JavaScriptスタイルガイド
    MDN CONST
    明日知りたい
    結合度,async,wait,try,catch