if(response[0].title !== undefined)
をチェックしていますが、エラーが発生します。
Uncaught TypeError:未定義のプロパティ 'title'を読み込めません。
response[0]
は定義されていません。定義されているかどうかを確認してから、そのプロパティのタイトルを確認してください。
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
response[0]
が未定義かどうかを確認してください。
if(response[0] !== undefined) { ... }
それでもタイトルを明示的に確認する必要がある場合は、最初の確認の後に確認してください。
if(response[0] !== undefined && response[0].title !== undefined){ ... }
上記の他のすべてのコード例で問題がありました。 Chromeでは、これが私にとってうまくいった条件でした。
typeof possiblyUndefinedVariable !== "undefined"
私は他のブラウザでそれをテストし、どうすればいいかを確かめる必要があります。
実際には、コードが機能しなくなることがないように、Try/Catchブロックで囲む必要があります。このような:
try{
if(typeof response[0].title !== 'undefined') {
doSomething();
}
}catch(e){
console.log('responde[0].title is undefined');
}
typeof:
var foo;
if (typeof foo == "undefined"){
//do stuff
}
response[0]
自体が未定義のためです。
condition == null
かどうか確認してください。それは問題を解決します
response[0]
が実際に存在するかどうかを確認してください。エラーは存在しないことを示唆しているようです。
最初にresponse[0]
が未定義かどうかをチェックしなければなりません、そして、そうでない場合だけ、残りをチェックしてください。つまり、あなたの場合、response[0]
は未定義です。
私は私が7ヶ月遅れてここに行ったことを知っている、しかし私はこの質問を見つけた、そしてそれは面白そうに見える。私はこれを私のブラウザコンソールで試しました。
try{x,true}catch(e){false}
変数xが未定義の場合、errorが捕捉されてfalseになり、そうでない場合はtrueを返します。そのため、eval関数を使って値を変数に設定することができます。
var isxdefined = eval('try{x,true}catch(e){false}')