【发布时间】:2019-05-04 22:51:36
【问题描述】:
想象一下这个简单的场景。我有一个变量,可以是具有一个属性 ID 的普通 JS 对象,即数字或 obj 变量可以为空。我有一个简单的 test() 函数来检查变量是否不为空并且它必须具有有效的 id 属性。
var obj = { id: 111 };
function test() {
return (obj && obj.id);
}
我希望这个函数总是返回布尔值,但实际上如果 obj 是未定义的,它会返回 undefined 或者如果对象存在则返回 obj.id 的值,就像上面的情况一样。为什么这个函数返回 111 而不是 true。
我要扯掉我的头发...请照亮我的思想:)
【问题讨论】:
-
这段代码的意思是“如果 obj 存在,则返回 obj.id”。你可以做
obj && obj.id !== null -
你想要的是添加
!!这将强制它转换为布尔值。return !!(obj && obj.id) -
@Oram 欢迎来到 JavaScript 世界:D
标签: javascript typechecking null-check