2012-01-18 24 views
2

imagesrcをこのオブジェクトに格納されている値に置き換える必要があります。私が実行したときしかし:変数が定義されていないとエラーが発生しないようにしますか?

if(data['results'][res]['entities']['media']["0"]["media_url"]) { 
    imagesrc = data['results'][res]['entities']['media']["0"]["media_url"]; 
} 

私はエラーを取得する:何かが定義されていない場合、私はエラーが出ないように

Cannot read property '0' of undefined 

は、どのように私は私の条件を実行できますか?

+0

最初に定義されていないかどうかを確認してください:http://stackoverflow.com/questions/776950/javascript-undefined-undefined –

+0

try..catchの使用を検討しましたか? – Li0liQ

答えて

2
if (data['results'][res]['entities']['media']["0"] == undefined 
    || data['results'][res]['entities']['media']["0"] == null) { 

    ... 
} 
+0

あなたは '... == undefined ||は必要ありません。 ... == null'。どちらの場合でも、 '=='は 'true'を返すので、どちらか一方だけ実行してください。 –

2

try catchブロックと検査エラーメッセージの中にコードを配置することができます。

0

あなたはオブジェクトツリーを歩くとすぐそれが未定義のプロパティを打つようundefinedを返す関数書くことができます:

var imagesrc = safeGetData(data, 
    ["results", res, "entities", "media", "0", "media_url"]); 
0

:あなたはこのようにそれを使用することができます

function safeGetData(obj, names) 
{ 
    for (var i = 0; i < names.length; ++i) { 
     if (typeof obj === "undefined") { 
      return undefined; 
     } 
     obj = obj[names[i]]; 
    } 
    return obj; 
} 

をそれは古い話です、私は知っています。私の2セントを追加するだけです。 私は間違いなくjavascript "guru"ではありませんが、ここで私の古い試みの一つです。それは新しいのECMAScriptのカップル6つの特徴に依存し、より多くの「機能」の方法で問題にアプローチするために起こっている:それがどのように動作するかを示すために

const prop = (...arr) => obj => arr.reduce((acc, v) => acc && acc.hasOwnProperty(v) ? acc[v] : undefined, obj) 

そして、いくつかのテスト:

describe('unit - prop',() => { 
    const event = { 
      record: { 
       sns: { 
        subject: 'Hello', 
        message: '<div>Welcome!</div>' 
       } 
      } 
     } 

    it('property exists', done => { 
     const value = prop('record', 'sns', 'subject')(event) 
     expect(value) 
      .to 
      .be 
      .equal('Hello') 
     done() 
    }) 

    it('property does not exist', done => { 
     const value = prop('record', 'bad', 'subject')(event) 
     expect(value) 
      .to 
      .be 
      .undefined 
     done() 
    }) 
}) 

意味がありますか?

関連する問題