初心者です。
JavaScriptのオブジェクトを取得し、対象のオブジェクトがあれば処理、というような条件文を書いております。
オブジェクトの中のオブジェクトを判定したいので、以下のような条件文を書いております。
javascript
1if (obj.target.name) { 2 // ...処理 3}
このような処理の場合、obj自体が存在せず、undefinedの場合に、undefinedのtargetを指定することになりエラーとなります。
objが存在して、obj.targetが存在しないケースと、objそのものが存在しないケースが発生します。
objが存在して、obj.targetが存在しないケースはundefinedなので条件文に入れて判定できます。
以下のように対応すると大丈夫かと思ったのですが、
javascript
1if (obj) { 2 if (obj.target) { 3 if (obj.target.name) { 4 // ...処理 5 } 6 } 7} 8if (obj) { 9 if (obj.target) { 10 if (obj.target.age) { 11 // ...処理 12 } 13 } 14} 15if (obj) { 16 if (obj.target) { 17 if (obj.target.hobby) { 18 // ...処理 19 } 20 } 21}
このように書けば良いと思ったのですが、obj.targetに対する処理が多くなればなるほど条件文が増えて冗長になってしまいます。
objにはobj.target以外に、obj.target2、obj.target3などが存在するケースがあるので、一括で条件に含める事は出来ません。
以下のような感じです。
javascript
1// obj.targetは存在しないが、obj.target2が存在すればtrue 2if (obj) { 3 // obj.targetが存在しないのでエラー 4 if (obj.target.name) { 5 // ...処理 6 } 7 if (obj.target.age) { 8 // ...処理 9 } 10 if (obj.target.hobby) { 11 // ...処理 12 } 13}
条件文を増やせば解決できるのですが、質問としては、条件文だらけの冗長な処理になってしまうのを避けたいので、何かいい考えがあれば教えていただきたいです。
回答2件
あなたの回答
tips
プレビュー