JavaScript | Uncaught TypeError: x.push is not x function エラーの原因と修正案

2023-10-16JavaScript エラー,JavaScript

JavaScript | Uncaught TypeError: x.push is not x function エラーの原因と修正案

JavaScriptで発生するコンソールエラー「Uncaught TypeError: x.push is not x function」の原因と対処・修正案について紹介しています。

Uncaught TypeError: x.push is not x function
キャッチされていない型エラー: x.push は関数ではありません
確認環境

サーバー:エックスサーバー
実行ブラウザ:Microsoft Edge バージョン 106.0.1370.42

Uncaught TypeError: x.push is not x function エラーの発生原因

「Uncaught TypeError: x.push is not x function」というJavaScriptのエラーは配列ではない型を持つ変数に対しpush()関数を実行しようとした際に発生するエラーです。
原因として起こりやすいケースにはオブジェクト型で定義された変数にpush()関数で値を追加処理が書かれているケースがあります。

このエラーは型エラー(Uncaught Type Error)に分類されています。

例えば、オブジェクト型で定義している変数「x」に対してpush()関数で値を追加しようとしているJSコードを実行する場合にエラーは発生します。

let x = {};
x.push('b');

// Uncaught TypeError: x.push is not x function

Uncaught TypeError: x.push is not x function の修正案

「Uncaught TypeError: x.push is not x function」エラーを修正するには、エラー対象となっている変数が配列型で定義されているかどうかを確認します。

例えば定義を配列型に修正して、push()関数で配列として値を追加します。

let x = [];
x.push('b');

// ['b']

また、オブジェクト型で定義されており、オブジェクト型として値を追加する場合は、通常通りオブジェクトのデータを追加します。

let x = {};
x.a = 'b';

// {a: 'b'}

Object.assign()関数を使ったオブジェクトデータの追加の場合。

let x = {};
Object.assign(x,{ a: 'b' });

// {a: 'b'}