Javascriptの変数

2094 ワード

JavaScriptでは、変数の作成は文字どおりの量と構造関数によって作成されます.varとletは変数を宣言し、constは定数を宣言し、オブジェクトも変数である.
  • varとlet宣言変数の違い
  • 1.varとletはグローバルスコープで宣言したのはすべてグローバル変数であり、値を再割り当てすることができますが、letで宣言した変数は声明を繰り返してはいけません.
    let a = 1;
    let a = 2;  // *          *
    
    2.ES 6に追加されたletキーワードは、ブロックレベルのスコープで宣言された変数をブロックレベルのスコープでのみ有効にします.この点を利用して変数名の衝突を避けることができます.関数ではletで変数を宣言したほうがいいです.
    ho();
    function ho(){
    	let a = 1;    // *         *
        if(true){
            let a = 2;  // * if       *
            console.log(a);  // 2
        }
        console.log(a);  // 1
    }
    
  • varには変数が存在し、letとconstには変数が存在しません.
  • JavaScriptの構文解析では、キーワード宣言による変数は現在のスコープのコードの先頭に引き上げられます.変数の割り当て前にこの変数の値がundefinedであり、letとconst宣言の変数の割り当て前には使用できません.
    console.log(a);  // undefined
    console.log(b);  // ReferenceError: Cannot access 'b' before
    console.log(c);  // ReferenceError: Cannot access 'c' before
    var a = 1;  
    let b = 1;
    const c = 1;
    
  • const定数は変更できません.及び再割当不能及び声明
  • const a = 1;  //     a, a   1
    a = 2;        //   (       )
    const a = 2;  //   (       )
    
  • 変数名と関数名(一般関数)とオブジェクト関数名
  • 1.変数名と関数名が重複している場合、変数はJavaScriptのプリコンパイルによって有効になり、変数がアップグレードされ、関数宣言は変数よりも早くなり、宣言された変数は繰り返し宣言されません.再割り当てだけです.
    // function a(){};       
    // var a;        
    var a = 1;
    function a(){}   //              
    console.log(a);  // 1
    
    2.オブジェクト関数は、変数の再割り当てに相当します.
    // var a;        
    var a = 1;
    var a = function(){}  //     
    console.log(a);  // function(){}
    
    3.グローバルスコープwindowの下で関数の中のスコープthisはwindow(非厳格モード)を指し、this.関数名によって変数を宣言し、変数は再割り当てされ、関数は上書きされます.
    function ho(){
        this.ho = 1;    // this  window,window.ho     1
        console.log(ho);// window.a 1,           
        var a = 1;      //              
    }
    console.log(ho);    //   ho       
    ho()                //   ho    
    console.log(ho);    //   window  ho  ,      1
    console.log(a);     // a     ,          
    
    まとめ:varとletは変数を宣言して、constは定数を宣言します.var宣言の変数には変数が存在し、繰り返し宣言し、再割り当てができます.let変数には変数がアップグレードされておらず、繰り返し宣言はできませんが、値を再割り当てできます.const定数は、声明を繰り返したり、値を再割り当てしたりすることができません.