想象这样一个简单的场景。我有一个变量,它可以是一个带有一个属性ID的普通JS对象,该属性是一个数字,或者obj变量可以为null。我有一个简单的test()函数,它检查变量是否不为null,并且必须具有有效的id属性。
var obj = { id: 111 };
function test() {
return (obj && obj.id);
}
我希望这个函数始终返回布尔值,但实际上如果obj为undefined或者obj.id的值存在时,它会返回undefined,就像上面的例子一样,它返回了111而不是true。请问为什么会这样呢?
我要抓狂了……求解惑啊!
obj && obj.id !== null
。 - Tobyreturn !!(obj && obj.id)
- Oram