Javascript 测试对象是否包含tap:false

Javascript 测试对象是否包含tap:false,javascript,Javascript,我正在接收以下两个对象之一: {alarmId: "2559"} {alarmId: "2559", tap: false} 我想这样做: if (tap(o)) { console.log("tap"); } else { console.log("not tap"); } 因此,如果对象的tap未定义,则tap应返回true,即使tap:true也应返回true,以确保安全。否则我希望从tap函数返回false。我应该如何编写tap函数 您可以这样编写函数: functi

我正在接收以下两个对象之一:

{alarmId: "2559"}
{alarmId: "2559", tap: false}
我想这样做:

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

因此,如果对象的tap未定义,则tap应返回true,即使tap:true也应返回true,以确保安全。否则我希望从tap函数返回false。我应该如何编写tap函数

您可以这样编写函数:

function tap (o) {
  return (typeof o["tap"] != "undefined");
}
如果对象已点击,则返回true

仅传递true和未定义的值。false、foo和42都返回false

只需使用:

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;

那么你的问题是什么?检测对象是否具有tap属性,或是否写入tap函数?你需要tap函数做什么?如果一个对象有一个键并读取它的值,什么是很难看到的?console.logmyObject.taptypeof不是函数。从技术上讲,这些参数是不必要的。点击{}将返回true。@Faouzioudou问题说明。。。为了安全起见,tap应该返回true[…]。因此,这似乎是合适的。当tap为真或未定义时,我希望tap返回真。@Baz好的,明白了。
return o.tap === false;