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

JavaScript球员进球数统计代码中三元运算与自增操作疑问

代码逻辑说明

你看不懂的那行是JavaScript的三元表达式,作用是判断当前遍历到的球员是否已经被统计过,和下面的if...else写法完全等价:

if (scorers[player]) {
  // 球员已统计过,进球数+1
  scorers[player]++
} else {
  // 球员第一次被统计,初始化进球数为1
  scorers[player] = 1
}

各部分作用拆解:

  • 首先判断条件scorers[player]:如果该球员已经是scorers对象的属性,说明之前已经统计过进球,属性值为之前的进球数(非0数字属于真值),就执行?后面的代码
  • scorers[player]++的作用就是将对应球员的进球计数加1。比如第一次遍历到Lewandowski时会给他赋值为1,第二次遍历到的时候就执行这行代码,把他的进球数从1改成2
  • 如果scorers[player]不存在,读取对象不存在的属性会返回undefined(属于假值),就执行:后面的代码,给该球员新增属性,初始进球数设为1

完整遍历执行过程:

  1. 第一次遍历到Lewandowski:无对应属性,赋值为1,此时scorers = { Lewandowski: 1 }
  2. 第二次遍历到Gnarby:无对应属性,赋值为1,此时scorers = { Lewandowski: 1, Gnarby: 1 }
  3. 第三次遍历到Lewandowski:已有对应属性,值为1,执行+1后变为2,此时scorers = { Lewandowski: 2, Gnarby: 1 }
  4. 第四次遍历到Hummels:无对应属性,赋值为1,最终得到目标统计结果

另外你贴的运行输出用[]包裹是笔误,普通对象的输出应该用{}包裹。

内容的提问来源于stack exchange,提问作者Mr.GoodkaT

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:39:04