JavaScriptの関数(一):参と形参

1431 ワード

JavaScriptの関数定義は、指定された型のものではなく、呼び出しも実際に行われていない任意のタイプの検査を行います.どれほど乱暴で自由なことか.
1オプションのイメージガイド
パラメータの個数が足りない場合は、/* optional */を使用して任意のパラメータを定義することができる.イメージブックに入る時、基本的なタイプは伝値、その他は伝アドレスです.
function getPropertyNames(o, /* optional */ a) {
    a = a || []
    a.push("Adress")
    for(var i in o) {
        a.push(o[i])
    }
    return a;
}

//   
var a,b,c;
a = getPropertyNames([1,2]);
console.info(a);

var arr = ["name"]
b = getPropertyNames(["b"], arr);
console.info(b,arr);
実行結果:
[Adress],1,2][name],“Adress”,“b”,“name”,“Adress”,“b”
説明:
  • a = a || []は慣用的な使い方であり、aを使用する前に、まず声明しなければならない.ここでaは、モダリティとして、var a
  • に相当する.
  • 実際の動作結果は、パラメータaが転送アドレス
  • であることを示している.
    2参画
    2.1可変実装(個数)
    function max( /*...*/ ) {
        var max = Number.NEGATIVE_INFINITY;
        console.info(max);
    
        for (var i = 0; i < arguments.length; i++) {
            if (arguments[i] > max) {
                max = arguments[i];
            }
        }
        return max;
    
    }
    
    console.info(max(10, 6, 80))
    
    結果:802.2実装対象
    argmentsパラメータ配列
    実際のパラメータが関数によって定義された参照数よりも大きい場合、多くのものはarguments[i]を使用して取得され、argumentsは参照対象を指す参照である(転送アドレス:arguments[i]を変更しても、参加者は一緒に変更される).
    caleeとcalerのプロパティ
    ECMAScrip 5の厳格なモードでは、この2つの属性は利用できません.厳密でないモードでは、カレルは現在実行中の関数を表します.