【実務・中級編】 Array.isArray()による配列判定 – JavaScript実践ガイド

なぜ、あなたの「配列判定」はバグを生むのか?― `Array.isArray()` が唯一無二である理由

現場でコードレビューをしていると、今でもたまに見かけるのが `typeof` や `instanceof` を使った中途半端な配列判定です。

「とりあえず動くから」と書かれたそのコード、実はフレームワークの境界を跨いだ瞬間や、iframeを介した外部データが混入した瞬間に死ぬ爆弾だということに気づいていますか?

今日は、JavaScriptの「型」という曖昧な概念と長年戦ってきた経験から、なぜ我々が `Array.isArray()` を崇拝すべきなのか、その真実を解き明かします。

—

なぜ `typeof` や `instanceof` が「裏切り者」なのか

まず、現場でよくある失敗を見てみましょう。

const data = [1, 2, 3];

// 1. typeof の限界
console.log(typeof data); // “object” と返ってくる。
// これでは配列か、単なる {} (プレーンオブジェクト) か、null か区別がつかない。

// 2. instanceof の裏切り
console.log(data instanceof Array); // true になるが…

`instanceof` は、一見正しそうに見えますよね。しかし、これが通用するのは「同一の実行コンテキスト内」という温室の中だけです。

例えば、ブラウザに複数のフレーム(`