JavaScript基本知識——this指向、グローバル変数と匿名関数スコープ


JavaScript基本知識——this指向、グローバル変数と匿名関数スコープ
  • 一、thisは作用域
  • を指す.
  • 、グローバル変数
  • 、匿名関数
  • 一、thisは作用域を指す.
       thisは関数が動作する時にある環境を指します.関数が置かれている環境は対象の住所と関係があります.例えばショー()が置かれている環境はwindowです.直接定義されている関数はwindowオブジェクトにデフォルトでマウントされていますので、window属性を通じてアクセスできます.b=a.showは実はbが指すのも一つの住所であり、関数の対象そのものです.
    var title="world";
    var a={
         
    	alias:this.title,
    	title:"hello",
    	show:function(){
         
    		console.log(this.title);
    		console.log(this.alias);
    	},
    	display: () =>{
         
    		console.log(this.title);
    		console.log(this.alias);
    	}
    }
    a.show();
    var b=a.show;
    b();
    a.display();
    
    二、グローバル変数
  • 以下のコード出力結果は10、20、10
  • です.
    var a = 20;
    function test(){
         
        a = 10;
        console.log(a);
        console.log(this.a);
        var a;
        console.log(a);
    }
    test();
    
  • 以下のコード出力結果はundefined、20、10
  • です.
    var a = 20;
    function test(){
         
        console.log(a);
        console.log(this.a);
        var a=10;
        console.log(a);
    }
    test();
    
  • 以下のコードの出力結果は20、20、10
  • です.
    var a = 20;
    function test(){
         
        console.log(a);
        console.log(this.a);
       	a=10;
        console.log(a);
    }
    test();
    
    事前に宣言します.javascriptスクリプトは、実行時に関数の宣言の変数を解析し、実行時にコードを実行します.javascriptは、厳格でないモードでvarで変数を定義していない場合、デフォルトで大域変数(var a=b=1、bは大域変数、aは局所変数)と定義され、functionでvarで定義される変数は、ローカル変数が存在するスタックの中で実行されたらすぐに廃棄されます.
    三、匿名関数
    直ちに実行される匿名関数は、グローバル変数を汚染することなく、jqueryのようにこのように定義されている.
    (function (a, b) {
         
       // jquery code
    })(window);
    
    以下のコードの実行結果は20,20,10です.
    var a = 20;
    (function test(){
         
        console.log(a);
        console.log(this.a);
       	a=10;
        console.log(a);
    })()
    
    引き続き更新します.