「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JavaScript でオブジェクトを含む配列に対して「typeof」が「Object」を返すのはなぜですか?

JavaScript でオブジェクトを含む配列に対して「typeof」が「Object」を返すのはなぜですか?

2024 年 11 月 8 日に公開
ブラウズ:578

Why Does `typeof` Return \

矛盾を理解する: オブジェクトを含む配列 typeof が「Object」を返す理由

開発者は驚くべき現象に遭遇する可能性があります: 配列に対して typeof を呼び出すときオブジェクトが含まれている場合、不可解なことに「配列」ではなく「オブジェクト」が返されます。この記事では、この一見矛盾した動作について詳しく説明します。

例を調べて、問題を説明してみましょう。

$.ajax({
    url: 'http://api.twitter.com/1/statuses/user_timeline.json',
    data: { screen_name: 'mick__romney'},
    dataType: 'jsonp',
    success: function(data) {
        console.dir(data); //Array[20]
        alert(typeof data); //Object
    }
});

console.dir(data) は変数を配列として正しく識別しますが、typeof データは不一致で「Object」を返します。

その説明は、typeof 演算子が使用される JavaScript の特有の仕様にあります。オブジェクトの内部 [[Class]] プロパティのタイプを返します。配列の場合、[[Class]] プロパティは「Array」に設定されますが、オブジェクトで囲まれる場合、[[Class]] プロパティは「Object」に変更されます。

正確な型チェックを確保するには、開発者はさまざまなアプローチを採用できます:

  • 配列のデータ インスタンス: 変数が配列型のインスタンスであるかどうかを確認します。
  • Array.isArray(data): 以下のために特別に設計されたメソッドです。オブジェクトが配列であるかどうかを判断します。
  • Object.prototype.toString.call(data) == '[object Array]': 信頼性が高く広く受け入れられている配列検出方法です。
  • $ .isArray(data): 配列をチェックするように設計された jQuery 固有の関数。

この特性を理解し、これらのテクニックを利用することで、開発者は JavaScript コードでオブジェクトの配列を効果的に処理できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3