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

JavaScript中变量为undefined时传递替代值的写法是否正确

结论

你的现有写法无法完全达到预期效果,存在两类逻辑问题。


存在的问题
  • || 运算符的判断逻辑不符合需求
    JavaScript 中 || 是逻辑或运算符,规则是返回第一个真值(truthy),所有操作数为假值时返回最后一个假值。它不会专门判断undefined,只要左侧是以下任意假值,都会触发替换为'undefined':
    • null
    • 数值0、NaN
    • 空字符串''
    • 布尔值false
      这就会导致值本身合法但为假值时,被错误替换成'undefined'字符串。
  • 存在前置报错风险
    代码中直接读取targetGuild.afkChannel.name,如果目标服务器没有设置AFK频道,targetGuild.afkChannel本身为null,这行代码会直接抛出TypeError: Cannot read properties of null (reading 'name'),模板字符串根本无法正常渲染,走不到后续判断afkChannelId的逻辑。

修正方案

根据你的实际需求二选一即可:

  • 如果你需要严格仅在值为undefined时才替换,其他假值(包括null、0、空串等)都保留原值,可参考以下写法:
`**AFK Channel:** ${targetGuild.afkChannel?.name === undefined ? 'undefined' : targetGuild.afkChannel.name}, ${targetGuild.afkChannelId === undefined ? 'undefined' : targetGuild.afkChannelId}`
  • 大部分业务场景下,null和undefined都代表值不存在,如果你希望这两种情况都替换为'undefined',可以用空值合并运算符??(该运算符只会在左侧为null/undefined时才返回右侧值,不会误判0、空串等合法假值),同时用可选链?.规避前置报错:
`**AFK Channel:** ${targetGuild.afkChannel?.name ?? 'undefined'}, ${targetGuild.afkChannelId ?? 'undefined'}`

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.09 16:15:44