Условие с true / false

150
22 февраля 2019, 14:00

Есть условие на проверку существует ли вообще поле, и если поле существует мы его обрабатываем, но столкнулся с очень удивительным результатом. В примере все поймете :)

По сути если есть 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({}))

Answer 1

Скорее всего вам нужен оператор 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';
    }
}
READ ALSO
Динамическое размещение элементов в svg

Динамическое размещение элементов в svg

Как в SVG на равных расстояниях друг от друга (статично) разместить несколько генерируемых окружностей по периметру прямоугольника(с заданными...

158
Как уменьuить изображения и отступы в jQuery Carousel Evolution?

Как уменьuить изображения и отступы в jQuery Carousel Evolution?

Есть карусель-гармошка фидл, построенная на базе jQuery - Carousel Evolution

164
Что выполняет данное выражание в JavaScript?

Что выполняет данное выражание в JavaScript?

Работая с одним open source проектом, столкнулся со строками, которые не понимаю

137
Как убрать ненужные стили?

Как убрать ненужные стили?

Owl Carousel добавляет ненужные стили к тегам, точнее ширину, которая мне не нужна

160