在 JavaScript 中,在逻辑上下文中对值进行求值,例如if 语句或布尔比较——可能会产生意想不到的结果。此行为是由于 JavaScript 的类型强制转换机制造成的。
JavaScript 松散地键入其值,当在逻辑上下文中使用字符串或数字值时,它会经历类型强制转换以将其转换为布尔值。在此转换中,非空字符串和非零数字的计算结果为 true,而空字符串和零数字的计算结果为 false。
因此,当您使用 == 或 === 比较“0”与 false 时,它返回 true,因为类型强制将“0”(非空字符串)和 false(类似零的值)都转换为 true。
但是,当使用 if 语句时,仅对“0”求值为真。这是因为 if 语句内部使用强制布尔值,该值对于非空字符串返回 true。
为了避免任何歧义,建议在比较原始值时使用严格相等运算符 ===,如它执行比较而不进行类型强制。这确保了必要时“0”被正确地评估为假。
请参阅所附表格,了解 JavaScript 对各种数据类型的 true/falsy 行为的简明表示。请记住,对于真正的相等比较,请始终选择 ===.
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3