:あなたはこのようにそれを使用することができます
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()
})
})
意味がありますか?
最初に定義されていないかどうかを確認してください:http://stackoverflow.com/questions/776950/javascript-undefined-undefined –
try..catchの使用を検討しましたか? – Li0liQ