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



为什么下面的代码能工作?为什么变量options中的对象被分配给i_identify_as_boolean而不是布尔值?

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

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

let options = {hello: 'world'};
let i_identify_as_boolean = typeof options == 'object' && options;
let i_identify_as_object = typeof options == 'object' ? options : null;
console.log(i_identify_as_object.hello);
console.log(i_identify_as_boolean.hello);

如果所有条件都是truthy,它将始终将其设置为最后一个truthy变量。

let x = true && 5
x returns 5;

如果您想将变量用作布尔值,可以对其进行双重否定,使其返回布尔值!!x

最新更新