我知道這是一個老話題。這只是添加我的2美分。 我絕對不是一個javascript「大師」,但這是我以前的一次嘗試。它依賴於一些新的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 – 2012-01-18 19:42:24
你有沒有考慮過使用try..catch? – Li0liQ 2012-01-18 19:42:33