【发布时间】:2020-06-05 22:49:17
【问题描述】:
为什么下面的代码有效?
为什么变量options 中的对象被分配给i_identify_as_boolean 而不是布尔值?
在这种情况下,我希望得到一个布尔值。如果我写typeof foo == 'object' ? foo : null 但不是以这种方式,我希望这会起作用。这样,我会期待一个布尔值。
那么为什么它会起作用?我已经尝试阅读 typeof 文档和 this 但没有任何说明这种行为。
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);
【问题讨论】:
-
这是对
as_boolean的奇怪命名,因为该属性存储一个对象,而不是布尔值。基本上,由于 JS 执行这段代码的方式,这段代码只是一个 (丑陋的?) 等价于typeof options == 'object' ? options : false
标签: javascript