2

残りの引数が欠落している場合、この関数がエラーをスローしないのはなぜですか?

showStatistics("Mark Teixeira", "New York Yankees", "1st Base");

定義された関数は次のとおりです。

function showStatistics(name, team, position, average, homeruns, rbi) {
  document.write("<p><strong>Name:</strong> " + arguments[0] + "<br />");
  document.write("<strong>Team:</strong> " + arguments[1] + "<br />");

  if (typeof arguments[2] === "string") {
    document.write("<strong>Position:</strong> " + position + "<br />"); 
  }
  if (typeof arguments[3] === "number") {
    document.write("<strong>Batting Average:</strong> " + average + "<br />");
  }
  if (typeof arguments[4] === "number") {
    document.write("<strong>Home Runs:</strong> " + homeruns + "<br />");
  }
  if (typeof arguments[5] === "number") {
    document.write("<strong>Runs Batted In:</strong> " + rbi + "</p>"); 
  }
}
4

3 に答える 3

2

渡されない引数はundefined、関数内に表示されます。JavaScript では、メソッドのオーバーロードはありません。

于 2013-10-24T17:08:04.197 に答える
1

JS領域の「配列」は実際には連想的であることを思い出してください。したがって、インデックス領域として配置した 2、3、... は、実際にはキーをハッシュするだけです。引数の値を確認することもできます[54876]。それは失敗しませんが、未定義に戻ります。したがって、パラメーター配列には有効なインデックスが 3 つしかなく、「範囲外のインデックス」の行に沿って何かを提供するものがあると考えていても、実際には 3 つの有効なエントリがあり、他のキーを使用したルックアップは失敗しません。 、しかしあなたに未定義を与えます。

于 2013-10-24T17:18:06.737 に答える