JavaScriptミドルチュートリアル(1)-変数


ユーチューブの『Coding Anma』のjavascript中級講座ビデオを参考にまとめた

変数可変


varは、宣言された変数を再宣言できます。

var name = 'Mike';
console.log(name); // Mike

var name = 'Jane'; 
console.log(name); // Jane

let name = 'Mike';
console.log(name); // Mike

let name = 'Jane'; // error!
console.log(name); 

varは宣言前に使用できます。

console.log(name); // undifined
var name = 'Mike';
var name宣言前に使用しましたが、エラーX
varとして宣言されたすべての変数は、コードを実際に移動しません.
上へドラッグとして表現されます.
これを吊り下げと言います.
がんばって
scope内部のどこでも、変数宣言は最上位で宣言されたように表現されます.
実際の動作は以下の通りです.
var name; // 호이스팅
console.log(name); // undifined
name = 'Mike'; //할당
ただし、ここでは、コンソール出力は定義されていません.
宣言は有意義だが.
割当額が上がらないからです.

恩浩を立ち上がらせない??

console.log(name); // ReferenceError
let name = 'Mike';
varとは異なり、letは作成時に上記のエラーが発生します.
それならHOESTINGになるのでしょうか?
いいえ、letも選択されます.
以上のように,エラーの原因は時間遅延パーティション(TDZ)である.

写真の出所:YouTube「コード安馬」
letとconstはTDZの影響を受ける.
したがって、TDZ領域の変数は使用できません.
つまり、割り振るまでは使えません.
これにより、コードを予測し、潜在的なエラーを低減できます.
ex)
let age = 30;

function showAge(){
  	console.log(age);
  
}
showAge();
上のコードは問題ありません.
しかし、次のコードに問題があります.
let age = 30;

function showAge(){
  	console.log(age);
  
  	let age = 20;
}
showAge();
それを見て、いい知らせはないと勘違いされた.
ホイスティンは「スコフ」単位で立ち上がった
上のコードでは、スキャンは関数の内部にあります.(以下に示す)
function showAge(){
  	console.log(age);
  
  	let age = 20;
}
letで宣言された2番目の変数は反発を生じます.
シースを付けない場合は、関数に宣言されたage=30を追加する必要があります.

変数の生成と定義


var

  • 宣言および初期化フェーズ
  • 割当フェーズ
  • let

  • 宣言フェーズ
  • 初期化フェーズ
  • 割当手順
    発表の過程で.
    実際のコードに到達すると初期化されます.
    参照エラーが発生しました.
  • const

  • 宣言+初期化+割り当て.
  • つまり、宣言と同時に分配しなければならない.

    スキャン


    var


    =>関数スキャン
    関数で宣言された変数のみがゾーン変数です.
    const age = 30;
    if(age>19){
     	var txt = '성인'; 
    }
    
    console.log(txt); // 성인
    関数で宣言した場合、外部では使用できません.
    function add(num1, num2){
    	var result = num1 + num2;
    }
    add(2,3);
    
    console.log(result); // referenceError발생.

    let, const


    =>ブロックスキャン
    すべてのコードブロックで生成された変数は、そのコードブロック内でのみ有効であり、外部からアクセスできません.
    すなわち、コードブロックに宣言される変数は、領域変数である.
    ここでいうコードブロック
    関数、if文、for文、while文、try~catch文など