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

Jekyll Liquid含or的if条件判断异常:单条件成立却整体为假

问题分析与解决

Liquid 中的 or 逻辑和常规编程语言完全一致——只要任一条件为真,整个表达式就会返回真,不存在特殊的工作机制。你遇到的问题不是 or 的问题,而是代码本身存在隐性错误,以下是具体排查方向:

1. 未定义变量 elem 的干扰

第二个 if 的第一个子条件是 elem == key and item == id,但代码中从未对 elem 变量赋值。在 Liquid 中,未定义的变量会被视为空字符串,所以如果 key 不是空字符串,这个子条件必然返回 false。不过这本来不影响第二个子条件生效,除非你在实际代码中误写了第二个子条件。

2. 第二个 if 的子条件存在隐性错误

虽然你贴的代码中第二个 if 的第二个子条件和第一个 if 完全一致,但实际运行时可能存在以下问题:

  • 变量名拼写笔误:比如实际代码中把 item.key 写成了 elem.key,或者把 item.id 写成了其他变量,导致条件不成立。
  • 类型不匹配:比如 key 或 id 的类型发生了变化(比如第一个 if 中 key 是字符串 "example",但后续代码中被修改为数字),导致 item.key == key 不成立。

3. 输出标签的混淆

你代码中第一个 if 的 else 分支输出的是 If-2 False,和第二个 if 的 else 分支输出内容完全相同,很可能你混淆了不同循环迭代的输出,把其他非对象元素的输出当成了同一元素的结果。

调试建议

在两个 if 语句之间添加调试输出,打印变量的实际值:

{{ item | inspect }}
{{ key | inspect }}
{{ id | inspect }}
{{ elem | inspect }}

通过查看这些值,就能明确判断第二个 if 的条件为什么没有生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:22:04