Есть условие на проверку существует ли вообще поле, и если поле существует мы его обрабатываем, но столкнулся с очень удивительным результатом. В примере все поймете :)
По сути если есть data.visible то оно должно вернуть VISIBLE но так как заходит false он его пропускает. Кто подскажет лучшее решение для этой задачи?
function result(data) {
if (data.visible) {
return 'VISIBLE: ' + data.visible;
} else {
return 'NOT VISIBLE';
}
}
console.log('OK', result({
visible: true
}))
console.log('OK', result({
visible: false
}))
console.log('FAIL', result({}))
Скорее всего вам нужен оператор in. Также вас может заинтересовать метод hasOwnProperty.
Оператор in проверяет присутствует ли свойство (пускай даже его значение "falsy" (0, пустая строка, undefined, null, false)) в самом объекте или одном из его предков по цепочке прототипов. hasOwnProperty делает тоже самое, но не лезет в цепочку прототипов (как видно из названия).
function result(data) {
// if ("visible" in data) { // если будем проверять родителей
if (data.hasOwnProperty("visible")) {
return 'VISIBLE: ' + data.visible;
} else {
return 'NOT VISIBLE';
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости