Javascriptの中のargmentsと重載の紹介

2124 ワード

言語の設計が間違っているので、アーグメンントは配列として扱われてもいいです.
 
  
function zero () {
    console.log(arguments[0]);
}
あります
 
  
function zero () {
  for(var i=0;i      console.log(arguments[i]);
  }
}
それはJavascriptの事実を利用しています.すなわちJavascです.
ここでのargments変数は、同様の配列のインターフェースを提供する.ここのargmentsの可変パラメータのために、私達はこれを利用して面白いものを作って、例えば重い荷物を載せます.
Javscript重載
stackvoerflowでは、重積載に関する問題がありますので、最初の答えがあります.
 
  
if (typeof friend === "undefined") {

} else {

}

もう一つの答えは
 
  
switch (arguments.length) {
case 0:
    //Probably error
    break;
case 1:
    //Do something
    break;
case 2:
default: //Fall through to handle case of more parameters
    //Do something else
    break;
}
ただこのような方式は本当に面白くなくて、まさか私達の関数は最後にこのようなになりますか?
 
  
function zero1 (){
    console.log('arguments 1')
};
function zero2 (){
    console.log('arguments 2')
};
function zero () {
  if(arguments.length == 1){
    zero1();
  } else{
    zero2();
  }
}
本当に全然面白くないです.switch.caseを変えても、みっともないです.
Javascript argmentsは配列ではありません.
argmentsは私達に見られるようにずっと行列ではなく、時には違うかもしれません.
 
  
function hello(){
    console.log(typeof arguments);
}
ここではargmentsのタイプはオブジェクトです.配列のタイプもオブジェクトですが、行列に変換できます.
 
  
var args = Array.prototype.slice.call(arguments);
しかしこれはまた、配列ではなく、Arayの唯一の属性であるlengthを持つことを示している.これ以外にも
argments.callee
Reference to the currently executing function.
argments.caller
Reference to the function that invoked the currently executing function.
argments.length
Reference to the number of argments passed to the function.