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

年龄比较函数输出异常排查:输入不同结果却始终一致

问题分析与解决

你的函数不管输入什么参数输出都一样,核心问题出在第一个if判断的运算符使用错误:

你写的是 if (age = myAge),这里的=是赋值运算符,它会把myAge的值(27)赋给age变量,然后这个表达式的结果就是27——在条件判断里非零值会被视为true,所以不管你传入的age是多少,这个分支都会被触发,直接返回第一个结果。

要解决这个问题,需要把赋值运算符=改成比较运算符:

  • 推荐用===做严格相等比较(同时比较值和数据类型)
  • 也可以用==做宽松相等比较

修正后的代码如下:

function compareAge(name, age) {
  let myAge = 27;
  if (age === myAge) {
    return `${name} is the same age as me.`
  } else if (age < myAge) {
    return `${name} is younger than me.`
  } else {
    // 前面两个条件不满足时,必然是年龄更大的情况,无需额外判断
    return `${name} is older than me.`
  }
}

console.log(compareAge('Kat', 2)); // 输出:Kat is younger than me.

内容的提问来源于stack exchange,提问作者Kat Shepil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:50:25