[
{ one: true },
{ one: 1 },
{ one: 0 },
{ one: 'foo' },
{ one: '' },
{ one: [] },
{ one: {} },
{ one: NaN },
{ one: null },
{ one: undefined },
]
{ two: true }
if (obj.one) {}
, то результаты будут следующими:[
{ one: true }, // true
{ one: 1 }, // true
{ one: 0 }, // false
{ one: 'foo' }, // true
{ one: '' }, // false
{ one: [] }, // true
{ one: {} }, // true
{ one: NaN }, // false
{ one: null }, // false
{ one: undefined }, // false
{ two: true }, // false
]
if (obj.one) {}
для того, чтобы проверить "Если есть в объекте one" не подходит.Object.hasOwnProperty
. Можно конечно использовать его такvar obj = {
one: true,
...objData,
};
if (obj.hasOwnProperty('one')) {}
{
one: true,
hasOwnProperty: 'foo',
}
Object.hasOwnProperty.call(object, property)
.if (obj.one) {}
именно такой и является).if (obj.one) {}
. Потому что любое значение obj
удовлетворяющее условию if (obj.one) {}
не удовлетворяет условию if (obj.one !== false) {}
.if (obj.one) {}
может подойти в ограниченном количестве случаев, но нужно быть предельно осторожным при использовании таких проверок. Как только вы присвоите obj.one
любое falsy значение (0, '', NaN, null, undefined) проверка сработает не так, как задумывалось.
Всё ж работает, что не так?