このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
TypeError: "x" is (not) "y"
JavaScript の例外 "x is (not)y" は、予期しない型があったときに発生します。よくあるのは、予期せずundefined またはnull の値があった場合です。
In this article
エラーメッセージ
js
TypeError: Unable to get property {x} of undefined or null reference (Edge)TypeError: "x" is (not) "y" (Firefox)例:TypeError: "x" is undefinedTypeError: "x" is nullTypeError: "undefined" is not an objectTypeError: "x" is not an object or nullTypeError: "x" is not a symbolエラーの種類
TypeErrorエラーの原因
予期しない型がありました。これはundefined またはnull の値でしばしば発生します。
また、Object.create() やSymbol.keyFor() のようなある種のメソッドは、特定の型を要求し、それを提供する必要があります。
例
>無効な場合
js
// undefined と null の場合、substring メソッドは動作しません。var foo = undefined;foo.substring(1); // TypeError: foo is undefinedvar foo = null;foo.substring(1); // TypeError: foo is null// ある種のメソッドでは、特定の型が求められることがあります。var foo = {};Symbol.keyFor(foo); // TypeError: foo is not a symbolvar foo = "bar";Object.create(foo); // TypeError: "foo" is not an object or null問題の修正
null ポインターをundefined 値に修正するには、次のようにtypeof 演算子を用いて行うことができます。
js
if (foo !== undefined) { // これで、 foo が定義されていることがわかるので、実行することができます。}if (typeof foo !== "undefined") { // 同じというのは良い考えですが、この実装を使わないでください。 - 本当の // undefined の値と未宣言の変数が混同されて問題が発生する可能性があります。}