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

Nunjucks范围判断条件不生效,如何修复这段代码?

问题分析与修复方案

你的代码存在两个关键问题导致无法正常运行:

  1. 语法错误:逻辑运算符使用错误
    JavaScript中逻辑与的正确写法是&&,而非and——and是Python等其他语言的语法,直接使用会导致代码报错无法执行。

  2. 潜在类型问题:字符串与数字的隐式转换风险
    从req.session.data获取的exchange-year通常是字符串类型,直接和数字比较可能出现预期外的结果(比如无效字符串转成NaN后,所有比较结果都会是false)。

修复后的代码

router.post('example', function (req, res) {
  // 显式将获取到的值转为数字,规避类型问题
  const exchangeYear = Number(req.session.data['exchange-year']);

  // 使用正确的逻辑运算符&&,同时根据需求调整范围(这里默认包含1和2000,若不需要则保留>1和<2000)
  if (exchangeYear >= 1 && exchangeYear <= 2000) {
    res.redirect('page1');
  } else {
    res.redirect('page2');
  }
});

额外优化建议

如果需要处理用户输入非数字的情况,可以增加有效性校验:

router.post('example', function (req, res) {
  const exchangeYear = Number(req.session.data['exchange-year']);

  // 先判断是否为有效数字,再检查范围
  if (!isNaN(exchangeYear) && exchangeYear >= 1 && exchangeYear <= 2000) {
    res.redirect('page1');
  } else {
    res.redirect('page2');
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:47:17