You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS代码中&&运算符作用解析及hash属性值非true的原因咨询

关于JavaScript中&&运算符的作用及代码结果疑问解答

一、先搞懂&&运算符到底在干啥

在JavaScript里,&&虽然叫逻辑与运算符,但它的行为不止是返回布尔值,核心是短路求值:

  • 如果左边的表达式是真值(比如true、非空字符串、非零数字这些),它会直接返回右边表达式执行后的结果,而不是返回true
  • 如果左边的表达式是假值(比如false、null、0、空字符串),它会直接返回左边的值,并且不会执行右边的表达式(这就是“短路”的由来)

举个简单例子帮你理解:

// 左边是真值,返回右边的执行结果
console.log(true && 'hello') // 输出 'hello'
// 左边是假值,直接返回左边,右边代码根本不会跑
console.log(false && 'hello') // 输出 false

二、你的代码为啥会出现这样的结果?

咱们拆开看你写的每一行赋值语句:

hash.jason = true && array.push('jason')

首先左边的true是真值,所以会执行右边的array.push('jason'),然后把这个方法的返回值赋值给hash.jason。

这里最关键的点要记住:Array.prototype.push()方法的返回值是数组更新后的长度,不是你push进去的元素,也不是true!

所以一步步来:

  1. 第一次执行array.push('jason'),数组从空变成['jason'],长度是1,所以hash.jason被赋值为1
  2. 第二次执行array.push('tom'),数组长度变成2,hash.tom就被赋值为2
  3. 第三次执行array.push('lucy'),数组长度变成3,hash.lucy就被赋值为3

而数组array自然就包含了你push进去的三个字符串,所以最终结果就是你看到的:

  • array是["jason", "tom", "lucy"]
  • hash是{jason: 1, tom: 2, lucy: 3}

如果你的预期是让hash的属性值为true,那直接分开写就行:

hash.jason = true; array.push('jason')

内容的提问来源于stack exchange,提问作者Jason will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 18:52:58