オブジェクトのプロパティが存在しないためエラーになってしまったので、オブジェクトのプロパティが存在しない場合は処理を実行させないようにif文で分岐させようとした時の備忘録です。
オブジェクトのプロパティが存在しない時とは
そもそもオブジェクトのプロパティが存在しない時とはどんな時なのかサンプルコードを見てみましょう。
サンプルコード
let personA = { name : “Nakamoto”, country : “Japan”, type : “O” };
console.log(personA.familyName); // undefined
オブジェクトの中にconsole.logで指定したプロパティが存在しないためundefinedとなります。
オブジェクトのプロパティが存在しない時で条件分岐
本題の条件分岐についてもサンプルコードを見てみましょう。オブジェクトのプロパティが存在する時、しない時で作成してみました。
サンプルコード
let personA = { name : “Nakamoto”, country : “Japan”, type : “O” };
// undefinedのとき
if(typeof personA.familyName === “undefined”){
console.log(“undefinedです”);
};
//undefinedではない時
if(typeof personA.name !== “undefined”){
console.log(“undefinedではないです”);
};
実行結果
undefinedです
undefinedではないです
typeofとは
参考程度の説明ですが typeof はデータの型を返す演算子です。
構文
typeof 値
サンプルコード
console.log(typeof “Haha”); // string
console.log(typeof 10); // number
let obj = { name: “nakamoto” };
console.log(typeof obj ); // object
console.log(typeof obj.name ); // string
console.log(typeof obj.familyName ); // undefined
obj.name = null;
console.log(typeof obj.name ); // object
型によって条件分岐させる時に使用するのが一般的な使われ方ですが、今回は undefined の時で条件分岐に使用しました。nullの値を代入すると object と返ってくるため null の時( obj.name == null )も含める場合は少し注意が必要です。
おわり
オブジェクトのプロパティが存在しない(undefined)という一見簡単そうな条件分岐でも、知らないと調べるのに結構時間を使ってしまいますね。typeofもあまり馴染みがなかったので勉強になりました。