Javascript 选项类型==';对象'&&;选项,为什么返回对象值?

Javascript 选项类型==';对象'&&;选项,为什么返回对象值?,javascript,Javascript,为什么下面的代码可以工作? 为什么变量options中的对象被分配给i\u标识为\u boolean而不是boolean 在这种情况下,我希望有一个布尔值。如果我写typeof foo=='object',我希望这能起作用?foo:null,但不是以这种方式。这样的话,我会期望一个布尔值 那么,它为什么有效呢?我试着阅读文档,但没有任何东西说明这种行为 let options={hello:'world'}; 让我把_标识为_boolean=typeof options=='object'&&

为什么下面的代码可以工作? 为什么变量
options
中的对象被分配给
i\u标识为\u boolean
而不是boolean

在这种情况下,我希望有一个布尔值。如果我写
typeof foo=='object',我希望这能起作用?foo:null
,但不是以这种方式。这样的话,我会期望一个布尔值

那么,它为什么有效呢?我试着阅读文档,但没有任何东西说明这种行为

let options={hello:'world'};
让我把_标识为_boolean=typeof options=='object'&&options;
让我把_标识为_object=typeof options=='object'?选项:空;
log(i_将_标识为_对象。hello);

log(i\u将\u标识为\u boolean.hello)如果所有条件都是truthy,它将始终将其设置为最后一个truthy变量

let x = true && 5
x returns 5;
如果要将变量用作布尔值,可以对其进行双反运算,使其返回布尔值
!!x

考虑到此属性存储的是对象,而不是布尔值,因此将
命名为布尔值是一个奇怪的名称。基本上,由于JS执行这段代码的方式,这段代码只是一个(丑陋的?)等价于
typeof options=='object'?选项:false