← エラー辞典に戻る

JavaScript

RangeError: Invalid array length

配列の長さに不正な値を指定している

こんな症状

new Array() に負の数や小数を渡すとエラーになる。配列の作成で起きるよ。

まず試す

new Array() には0以上の整数を渡す。変数なら Math.max(0, Math.floor(値)) で安全にする。

js
// ✅ 0以上の整数
const arr = new Array(5);

// ✅ リテラルの方が安全で読みやすい
const list = [1, 2, 3];

これで直らなければ、下の「自分のケース」を確認。

🔍 自分のケースはどれ?

  • new Array(-1) など負の数
    → 0以上の整数にする。
  • new Array(1.5) など小数
    → 整数にする。Math.floor で丸める。
  • 変数の値が意図せず負/小数になった
    → Math.max(0, Math.floor(値)) で安全な長さにする。

なぜ起きる?

new Array(-1)やnew Array(1.5)のように、配列の長さとして無効な値を指定しているよ。配列の長さは0以上の整数(0〜2^32-1)でなければならないんだ。変数の値が意図せず負数や小数になっている場合にも発生するよ。

✕ エラーが起きるコード
const arr = new Array(-1);
// 負の長さ
✓ 直したコード
const arr = new Array(5);
// 正の整数

✅ 直ったか確認

配列が RangeError なく作成できればOK。

🆘 まだ直らないときは

長さ指定の配列より、配列リテラル [] や Array.from({length: n}) の方が安全で読みやすい。

Q&Aで質問する →

この解決法は役立ちましたか?

🔗 関連するエラー

🔗 別カテゴリの関連エラー

📖 この問題を学べるレッスン

JSレッスン4:繰り返し処理で根本から理解する →

✏️ 手を動かして練習

このテーマの図解ドリルで実際に書いて確認する →

📝 関連ブログ記事

📖 関連する用語

🚀 JSレッスン4:繰り返し処理で根本解決しよう!

このエラーの背景にある仕組みを、手を動かしながら学べるレッスンがあります。完全無料・登録不要。

JSレッスン4:繰り返し処理へ →

❓ 関連するQ&A