检查覆盖价值的无效性

时间:2017-02-28 11:10:44

标签: javascript conditional

我想在我的代码中创建一个类似的构造。

var inList =  findItem(list, data); 

if(!inList) {

  var item = inList.item;

}

function findItem(list, data) {
  var item = list.find("[data-day='"+data.day+"']")

  // more code.

  // conditional return
  return {item: item, valueOf:function(){return false}};
}

但它不起作用,因为覆盖valueOf不能很好地用一个简单的真实检查(以我希望它的方式工作)。

并且像if(inList == false){}这样的代码看起来不那么干净了。有没有办法使这项工作?

1 个答案:

答案 0 :(得分:1)

布尔检查不会调用valueOf - 所有对象都被认为是真实的。如果你想绕过它,你必须自己明确地调用它:

if (!inList.valueOf()) …