04--関数、小練習、初期スコープ

3467 ワード

関数
プログラミングは、同じ機能のコードを抜き出してブラックボックスに入れ、呼び出しごとにこのブラックボックスを呼び出すと、もう自分で書かなくてもいいです.何度も繰り返さないようにします.Javascriptの中でブラックボックスの役割を果たしているのが関数です.結合とは重複の意味です.
関数のfunctionキーワードはVarと本質的な違いがありません.関数の基本機能と呼び出し:
function test(){
    var a = 123;
    var b = 234;
    var c = a +b;
    doucument.write(c);
}
test();  //357       //    
関数の定義
1、関数宣言の基本形式:
//   
function test(){
    //      
}

document.write(test)   //   function test(){}
//test     ,test()      
関数名と変数名の名前のつけ方が似ていますが、もし関数名や変数名が複数の単語であれば、開発規範に合うように、最初の単語を小文字で書いてください.
2、関数式
//   :       
var test = function  testAbc(){
    document.write('a');    //           
}
//   :        ----     ,         
var demo = function(){
    document.write('b');    
}

document.write(test())    //a,        test()
ネーミング関数表現形式宣言関数は、関数の名前を無視します.ここでは関数名も匿名関数に相当します.つまり、式として機能すると、関数体として機能しません.ネーミング関数式は関数体を表すのも変数名testです.abcではありません.
3つの方法は1つの違いしかありません.1つ目の定義と3つ目の定義方法の関数名は自分自身です.2つ目は変数名です.
構成形式
1、関数名は、関数キーワードfunction、関数名、()、{}が必要です.2、パラメータ(オプション)javascriptのパラメータは個数を制限しません.これもjavascriptパラメータの強力な機能です.形の参と実の参の数は一定ではありませんて、実参加は形の参より多いことができて、形の参も実の参より多いことができます.
  • は、括弧にaを追加し、bは、関数内で暗黙的に宣言された2つの変数に相当しますが、値がないので、パラメータを渡すことによってパラメータに値を割り当てることができます.
  • function sum(a, b){
        //      -- var a;   var b;
        document.write(a+b);
        //sume.length  --      
    }
    
    パラメータの種類を宣言する必要はありません.ここでのパラメータは一つの形式を表していますので、形式パラメータと呼ばれています.
    各関数には、アーグメンント--[11,2,3]--実際の参加リストがありますが、参加を受け入れたかどうかに関わらず、アーグメンツは実際の参を行列として保存します.参加を受信していない場合も、すべての参加リストにアクセスできます.
    function sum(a){
         //arguments -- [11, 2, 3]        
        //console.log(arguments);   //      
        for(var i = 0; i< arguments.length; i++){
            console.log(arguments[i]);
        }
    }
    
  • 实参
  • sum(11, 2, 3)
    
    ここで実際に使う時に送るパラメータは実際のパラメータです.
    パラメータの長さ:外形の長さはsum.lengthでアクセスでき、実際のパラメータの長さはargments.lengthで知ることができます.パラメータは変数であれば、どのタイプでも大丈夫です.
    イメージと実パラメータの数を比較します.
    function sum(a, b, c, d){
        if(sum.length > arguments.length){
            console.log('    ');
        }else if(sum.length < arguments.length){  
            console.log('    ');
        }else{
            console.log('    ');
        }
    }
    
    sum(2, undefined, 11,'abc',7);  
    
    任意の数の合計を実現します.
    function sum(){
        var result = 0;
        for(var i = 0; i< arguments.length; i++){
            result += arguments[i];
        }
        console.log(result)
    }
    
    sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);    
    
    形参とアーグメンントは同時に変化しますが、彼らは同じ変数ではなく、システム内部にマッピングルールがあります.例えば、以下の例:
    function sum(a, b){
        //arguments[1,2]
        //var a = 1;
        
        //     
        a = 2;
        console.log(arguments[0]);    //  2
    
         //     
        a = 2;
        arguments[0] = 3;
        console.log(a);    //  3
    }
    
    sum(1, 2);
    
    しかし、実際の参加は形より少なく、このときのマッピングは存在しない場合があります.例えば、実際の参は一つしかなく、形は二つあります.
    function sum(a, b){
        b = 2;
        console.log(arguments[1]);     //  undefined
    }
    sum(1);
    
    実際に参加して送る時いくつかあって、決めたのは変えられないで、ここでb=2も実参加リストに値を添加することはできなくて、それがまったく第2のパラメーターがないため、この時bは1つの変数に相当します.
    つまり、形参と実参加が同じ時にマッピングルールがあります.待たないと、形参が多くなります.
    3、戻り値(return)
  • は終了関数であり、関数の最後にreturnが付加されていない場合、システムは暗黙的にreturnを追加して関数を終了します.
  • は戻り値です.これはよく使われています.
  • function myNumber(target){
        return +target;
    }
    var num = myNumber('123');
    console.log(typeof(num) + " " + num);