チェックしif(response[0].title !== undefined)
ていますが、エラーが発生します。
Uncaught TypeError:未定義のプロパティ 'title'を読み取れません。
チェックしif(response[0].title !== undefined)
ていますが、エラーが発生します。
Uncaught TypeError:未定義のプロパティ 'title'を読み取れません。
回答:
response[0]
定義されていない場合は、定義されているかどうかを確認してから、プロパティのタイトルを確認してください。
if(typeof response[0] !== 'undefined' && typeof response[0].title !== 'undefined'){
//Do something
}
undefined
JavaScriptキーワードではないため、チェックを実行する良い方法ではありません(だれもがそうだと思っているようですが)。必要に応じて、呼び出される変数を作成するundefined
と、このチェックは正しくなくなります。唯一の正しい方法はチェックすること(typeof myVar !== 'undefined')
です。
undefined
ですか?
response[0]
が未定義かどうかを確認してください:
if(response[0] !== undefined) { ... }
それでもタイトルを明示的に確認する必要がある場合は、最初の確認後に確認してください。
if(response[0] !== undefined && response[0].title !== 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]
自体が未定義だからです。
私は7か月遅れてここに行ったのを知っていますが、私はこの質問を見つけました、そしてそれは興味深いようです。私は自分のブラウザコンソールでこれを試しました。
try{x,true}catch(e){false}
変数xが未定義の場合、エラーがキャッチされてfalseになり、そうでない場合はtrueが返されます。したがって、eval関数を使用して値を変数に設定できます
var isxdefined = eval('try{x,true}catch(e){false}')
これらの回答のいくつかには、使用方法に関する根本的な誤解がありますtypeof
。
不正解
if (typeof myVar === undefined) {
正しい
if (typeof myVar === 'undefined') {
その理由はtypeof
、文字列を返すからです。したがって、undefined
それ自体がJavaScriptのプリミティブ型の 1つである(引用符で囲まれていない)ではなく、「未定義」という文字列を返したことを確認する必要があります。typeof
オペレータは、型の値を返すことはありませんundefined
。
補遺
誤った比較を使用すると、コードは技術的に機能する可能性がありますが、おそらくあなたが考える理由では機能しません。undefined
JavaScriptには既存の変数はありません。これは、比較可能な魔法のキーワードではありません。と呼ばれる変数を実際に作成し、undefined
それに任意の値を与えることができます。
let undefined = 42;
これは、これを使用して最初の方法が正しくないことを証明する方法の例です。