我想在我的代码中创建一个类似的构造。
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){}这样的代码看起来不那么干净了。有没有办法使这项工作?
答案 0 :(得分:1)
布尔检查不会调用valueOf
- 所有对象都被认为是真实的。如果你想绕过它,你必须自己明确地调用它:
if (!inList.valueOf()) …