Нет, это небезопасно, поскольку свойство действительно может существовать для объекта, но оно может быть falsey , в этом случае withValue.d ||
завершится ошибкой и перейдет к чередованию, назначив объект для d
свойство, несмотря на то, что свойство d
уже существует. Вместо этого используйте hasOwnProperty
и не помещайте присваивание там, где ожидается выражение:
if (!withValue.hasOwnProperty('d')) {
withValue.d = {
enumerable: false,
writable: false,
configurable: false,
value: value
}
}
const { d } = withValue;
Если свойство d
, если оно существует, всегда будет объектом , то ваш исходный код будет работать , потому что объекты всегда верны. (Код все еще вонючий, хотя, из-за присваивания как выражения)