[JS] 31. JavaScriptの変数

5321 ワード

1)グローバル変数

var f1 = function(){
	a= 1;
	var a;
    
	alert(a);
	alert(window.a);
}

  • 結果はundefinedです./alert(a)は1を出す.

  • functionでは、変数を宣言する前に(a=1;到)、aはグローバル変数に入る属性である.
    変数を宣言すると、1を代入する意味がありません.(グローバル変数ではありません.)

  • したがって、alert(window.a);地域変数を利用する.
    まずvarを識別する優先度はa=1である.この地域の変数になる.window.a中aはグローバル変数var a中aは領域変数である.
  • var f1 = function(){
    	a= 1;
    	var a;
        
            a++
        
    	alert(a);
    	alert(window.a);
    }
    alert(a);2を出す.

  • 同じ変数を複数回宣言します.
    両方ともグローバル変数です.
    出張が間違っているのは普通だが,出られない.
  • var a = 1;
    var a = 2;
    
    alert(a);

  • かっこを使用する場合:
    結果は1です.
    カッコを使用して変数を宣言する場合、JavaScriptでカッコを使用しても意味がありません.
  • {
    	var a = 1;
    }
    alert(a);
    
  • 結果未定
  • alert(a);
    
    {
    	var a = 1;
    }
    

    2)グローバル変数とゾーン変数

    function f1(){
    	var a = 1;
        
    }
    
    f1();
    
    alert(a);

  • 関数の変数
    エラーが発生しました.
  • function f1(){
    	a = 1;
        
    }
    
    f1();
    
    alert(a);

  • ここでaはグローバル変数であるため,結果は1である.
    関数で宣言されたグローバル変数
  • function f1(){
    	var a = 1;
    	f2();
        
    	function f2(){
    		var a = 2;
    		f3();
            
    		function f3(){
    			var a = 3;
    		}
    			console.log(a);
    	}
    }
    
    f1();

  • console.log(a);3は出力、
    var a = 3;ない場合は2が出力となり、
    var a = 2;ない場合は1を出力します.
    領域内でグローバル変数になります.
  • function f1(){
    	var a = 1;
    	f2();
        
    	function f2(){
    		a = 2;
    		f3();
            
    		function f3(){
    			console.log(a);
    			console.log(window.a);
    		}
    	}
    }
    
    f1();
  • console.log(a);は2、console.log(window.a);は未定.
    したがって、a=2;グローバル変数ではありません.
    同じ名前で外にいると、グローバル変数はだめです.

  • グローバル変数を意図している場合は、グローバルオブジェクトを使用することが望ましい.
    a = 2;乙window.a=2;と書く.

  • 外部の内部機能のため、メモリからクリアできないという問題があります.
  • 3)キャビネット

    function f1(){
    	var a = 1;
    	return a;
    }
    
    var a = f1();
    alert(a);
  • 戻りaは対象です.

  • function f 1にはprimitive typeがあるのでreturn aのaはオブジェクトです.
    非参照値を返します.
    そしてvar a=1;中1はまた1つの箱になって、aを参照して1を加えます.
    return aとなった瞬間、関数f 1()内は全て消失する.
  • function f1(){
    	var a = 1;
    	return function f2(){
    		return a;
            }
    }
    
    var f = f1();
    var a = f();
    alert(a);

  • function f 2はオブジェクトなので、戻りは問題ありません.
    ここで、aはローカル変数ではなく、f 1のvara=1である.使用します.
    f 1から戻った後、使用するリソースは消えるべきであるが、f 2の戻ったa;したがって、f 1のリソースは消えない.
    f 2はf 1(outer function)が閉じるかどうかを決定する鍵である.このコールバック関数を「閉じる」と呼びます.
    つまり、外部接続の変数を使って外部を消さないのがエンクロージャです.
  •         function f1(){
                var a = 1;
    
                return function(){
                    console.log(a);
                    return a;
                }
            }
    
            var closurefunction = f1();
            closurefunction();
    
            closurefunction = null;
  • closurefunction = null;ゴミ収集器は同時に消えます->f 1()スタック.
  • 4)関数オブジェクト


  • 関数は簡単に渡すこともできます.

  • 関数はオブジェクトなので、関数のパラメータとして渡すことができます.

  • printの関数()が渡されているパラメータ.

  • ソート基準はsortに渡すことができます.

  • 1)
    	var nums = [4,7,3,1,6,3,2,11,9];
    	console.log(nums);
    
    	nums.sort();
    	console.log(nums);

    2)
            var nums = [4,7,3,1,6,3,2,11,9];
            console.log(nums);
    
    
            nums.sort(function(a, b){
    
                return a - b; //오름차순 b-a는 내림차순, 0이면 그대로
            });
            console.log(nums);
    3)
            var exams = [{kor:10, eng:30}, {kor:32, eng:42}, {kor:19, eng:90}];
            console.log(exams);
    
    
            exams.sort(function(a, b){
                return kor.a - kor.b; // 원하는 기준으로
            });
            console.log(exams);

    5)Javaスクリプトデータフォーマットのタイプ


  • Primitiveパッケージタイプ(ベーシックタイプ)、Reference type

  • typeofはprimitiveパッケージtype(基本型)の演算子です.
    基本型を除いてobjectで現れる.
  • instanceofはreference type用の演算子である.

  • 注意すべき演算.
    1)objectでなくてもobjectが現れる.
    2)どちらもfalseなのでtrue
    3) false

  • Array独自の検証方法はisArrayです.

  • int型ではビットが不足し、オーバーフローする可能性が高い.△変な数字が出てきた.
    末尾にnを加えると、大きい整数型、大きい整数型を表すことができる.