3 ms·
function thisIsBad ({ someKey: renamedSomeKey, someOtherKey: renamedSomeOtherKey = 'otherDefaultValue', meta: { innerMetaKey = 'someInnerMetaKeyValu
by lhnz 10y ago
function thisIsBad ({
someKey: renamedSomeKey,
someOtherKey: renamedSomeOtherKey = 'otherDefaultValue',
meta: { innerMetaKey = 'someInnerMetaKeyValue', otherInnerMetaKey, ...remainingMeta }
} = {
someKey: 'defaultValue',
someOtherKey: SOME_CONSTANT,
meta: {}
}) {
// ...
return { someKey: renamedSomeKey }
}
My favourite messed up part of the syntax is the way the `:` character is used to describe either the default value of a property or a way of renaming the name of a property internally (depending on whether it is to the left or right of an `=`). And also, the way you can destructure the inside of an object, and automatically lose the original value. For example `meta` is not accessible within the function defined above.
This is syntax which can simplify your code if you apply it carefully, but will ruin your code if you over-use it.
- fryan 10y agoI had to debug code like that the other day. Before you debug it you have to mentally grok wtf is going on. What a mess.