JavaScript 中的逻辑运算符:了解非布尔结果
与始终返回数值的数学运算符不同,逻辑运算符(&& 和 | JavaScript 中的 |) 有时可以返回对象而不是布尔值。这可能是违反直觉的,尤其是在尝试使用它们进行条件检查时。
为什么返回对象
||和 && 运算符是逻辑短路运算符,这意味着它们从左到右评估其操作数并返回第一个完全确定的逻辑值。在 JavaScript 中,该值可以是 true 或 false,但它也可以是一个对象。
理解条件逻辑
表达式 X || 中首先评估 Y、X 并将其解释为布尔值。如果 X 为 true,则立即返回,并且不计算 Y。这是因为表达式已被确定为 true。
如果 X 为 false,则计算 Y 并返回其布尔值。
类似地,如果第一个参数 && 停止计算
“False”的技巧
出现第一个混淆点是因为当表达式被评估为“true”时,表达式本身被返回。这就是为什么您可能会看到从逻辑表达式返回实际值的原因。
空的技巧
第二个混淆点源于 JavaScript 在不同版本中的行为。最初,它会对“false”表达式返回 false,但从版本 1.2 开始,它返回表达式的实际值。
示例
说明:
var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {}); // Returns obj.fn() if defined, otherwise obj._ var _ = obj && obj._; // Returns obj._ if obj is true, otherwise obj
以上是为什么 JavaScript 逻辑运算符有时返回对象而不是布尔值?的详细内容。更多信息请关注PHP中文网其他相关文章!