4 ms·
try { const { attribute1, attribute2 } = getObject() } catch () {} attribute1 // undefined How would you solve that?
by madacol 7y ago
try {
const { attribute1, attribute2 } = getObject()
} catch () {}
attribute1 // undefined
How would you solve that?
- dragonwriter 7y agoWith let outside the try, because that's the intended scope. Insofar as there is a problem I see with that, it's that you can't separate declaration of a single-assignment value (const) from the one allowed assignment, because the ideal solution would be const declared outside the try with the assignment inside. OTOH var declared inside is a bad solution because it's both misleading as to scope and using a freely-assignable variable for something that's logically single-assignment. Let outside has only one of those problems.
- madacol 7y agoExactly, I'm just pointing out the limitations of `let/const` I usually solve that case with let attribute1, attribute2; try { const object = getObject() attribute1 = object.attribute1 attribute2 = object.attribute2 } catch () {} But I'm just not satisfied with it, too many statements. And it gets really messy with many attributes
- decentralised 7y agoHow about this: let attribute1, attribute2; try { ({attribute1, attribute2} = getObject()) } catch (e) {}
- madacol 7y agowow, didn't know that! So parenthesis are the trick, thanks!
- decentralised 7y agoNo problem!