JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで引数(arguments)にtypeofを使う方法をわかりやすく解説

JavaScriptには、関数に渡された引数をすべて格納するargumentsオブジェクトが用意されています。これはすべての関数内で自動的に利用できる特別な変数で、仮引数として宣言していなくても、渡された値にアクセスできます。

例えば、関数に2つの引数が渡された場合、次のようにインデックス番号を使ってそれぞれの値を参照できます。

arguments[0]
arguments[1]

このようにして取得した引数に対して、typeof演算子を組み合わせて使うことも可能です。まずは、typeof演算子の基本的な使い方から確認していきましょう。

typeof演算子とは

typeof単項演算子の一種で、オペランド(評価対象の値)の直前に置いて使用します。オペランドは文字列・数値・オブジェクトなど、どんな型の値でも構いません。評価結果として、その値の型を表す文字列("number"、"string"、"object"など)が返されます。

使用例

次のコードは、typeof演算子を使って変数の型を判定し、結果を画面に出力する基本的な実装例です。

<html>
   <body>
      <script>
         var a = 20;
         var b = "String";
         var linebreak = "<br />";

         result = (typeof b == "string" ? "B is String" : "B is Numeric");
         document.write("Result => ");
         document.write(result);
         document.write(linebreak);

         result = (typeof a == "string" ? "A is String" : "A is Numeric");
         document.write("Result => ");
         document.write(result);
         document.write(linebreak);
      </script>
   </body>
</html>

この例では、三項演算子と組み合わせることで、変数bが文字列型なら「B is String」、そうでなければ「B is Numeric」と表示され、同様に変数aについても型の判定結果が出力されます。

argumentsに対してtypeofを使う方法

それでは本題の、typeofを引数(arguments)と組み合わせて使う方法を見ていきましょう。

argumentsそのものは「配列のようなオブジェクト(array-like object)」であるため、typeof argumentsと記述すると、戻り値は"object"になります。

document.write(typeof arguments); // 結果:object

一方、個々の引数に対してtypeofを使いたい場合は、インデックスを指定します。例えば2つの引数が渡されている関数では、次のように書くことで、それぞれの引数の型を取得できます。

document.write(typeof arguments[0]);
document.write(typeof arguments[1]);

このコードでは、arguments[0]arguments[1]に格納された実際の値の型("number"、"string"など)が返されます。typeofはあくまで「引数そのもの」ではなく「引数の中身」を評価する点に注意しましょう。

まとめ

  • argumentsは関数に渡された引数を保持するオブジェクトで、typeof argumentsは"object"を返す。
  • 個別の引数の型を調べたい場合は、typeof arguments[0]のようにインデックスを指定する。
  • typeofは単項演算子であり、任意の型の値に対して使用できる。

この仕組みを理解しておくと、可変長の引数を受け取る関数で、渡された値の型に応じて処理を分岐させるといった柔軟な実装が可能になります。

  1. JavaScriptのcall()メソッドで引数を渡す方法をわかりやすく解説

    JavaScript call()メソッドとは?JavaScriptのcall()メソッドを使うと、あるオブジェクト向けに定義した関数を、別のオブジェクトのコンテキストで実行できます。thisの参照先を差し替えることで、同じメソッドを複数のオブジェクト間で再利用できるのが最大のメリットです。call()の特徴は、第1引数にthisとして渡したいオブジェクトを指定し、第2引数以降に関数へ渡す値をカンマ区切りで個別に指定する点です。引数を配列としてまとめて渡すapply()メソッドとの違いは、この部分にあります。サンプルコード以下は、call()メソッドに引数を渡して呼び出す具体例です。<!

  2. JavaScript関数で名前付き引数を使う方法|分割代入で簡単に実現するテクニック

    JavaScriptにおける名前付き引数とは? Pythonなどの言語には「名前付き引数(キーワード引数)」という機能が標準で備わっていますが、JavaScriptにはこの機能が組み込まれていません。しかし、オブジェクトの分割代入(Destructuring)を活用することで、名前付き引数と同じ挙動を簡単に実現できます。 基本的な仕組み 関数の引数としてオブジェクトを1つ受け取り、その中から必要なプロパティを分割代入で取り出します。各プロパティにはデフォルト値も同時に指定できるため、引数が省略された場合でもエラーにならず安全に処理できます。 サンプルコード 以下は、オブジェクトを引数として渡し