Я получаю любой из этих двух объектов:

{alarmId: "2559"}
{alarmId: "2559", tap: false}

И я хочу сделать что-то вроде этого:

if (tap(o)) {
    console.log("tap");
}
else {
    console.log("not tap");
}

Так что, если tap не определен для объекта, tap должен вернуть true и даже если tap:true просто для безопасности. В противном случае я хочу вернуть false из функции касания. Как мне написать функцию крана?

0
Baz 8 Дек 2016 в 17:02

3 ответа

Лучший ответ
function tap (o) {
  return (typeof o.tap === "undefined" || o.tap === true);
}

Только true и неопределенные значения проходят. (false, "foo" и 42 все возвращают false

0
Praveen Kumar Purushothaman 8 Дек 2016 в 14:11

Просто используйте:

if(o.tap === false)
    console.log('tap is false')       // tap is the value `false`
else
    console.log('tap is not `false`') // tap can be anything: any value, or `undefined`.

Проверьте значение, которое вы хотите, не делайте его сложнее, чем нужно.

Это может быть так просто, как:

return o.tap === false;
-2
Cerbrus 8 Дек 2016 в 14:12

Вы можете написать функцию следующим образом:

function tap (o) {
  return (typeof o["tap"] != "undefined");
}

Это возвращает true, если объект имеет tap.

-1
Praveen Kumar Purushothaman 8 Дек 2016 в 14:04