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

JS中如何正确查询URL参数?if-else语句报错该如何排查解决

问题排查与修复方案

现有代码问题说明

你的代码语法层面不存在错误,若编辑器提示if-else异常,大概率是代码缩进不规范导致的,调整缩进对齐即可消除提示。
但你的实现逻辑不符合预期,存在两处问题:

  • 判断条件使用了||(或运算符),只要title和name任意一个参数存在就会进入if分支,此时缺失的参数调用get()会返回null,最终输出内容会出现null值
  • 现有逻辑只能做到“两个参数都不存在时才用默认值”,无法实现你要求的“缺失对应参数就用对应默认值”的需求

修复方案

方案1:仅当两个参数同时存在时用参数值,否则全用默认值

如果你的需求是两种输出格式完全分离,只要缺任意一个参数就用默认的who+department格式,仅需将判断条件的||修改为&&(且运算符)即可:

const handleRequest = (request) => {
  const url = new URL(request.url);
  const params = url.searchParams;
  let who = "employee";
  let department = "admin";

  if (params.has("title") && params.has("name")) {
    return new Response(`Please address your request to ${params.get("title")} called ${params.get("name")}.`);
  } else {
    return new Response(`Please address your request to ${who} in the ${department}.`);
  }
};

方案2:哪个参数存在就用哪个,缺失的用默认值

如果你需要参数和默认值分别兜底,也就是即使只传一个参数也能正常拼接,不需要区分两种输出格式,可以简化代码去掉if-else分支:

const handleRequest = (request) => {
  const url = new URL(request.url);
  const params = url.searchParams;
  // 分别给对应参数设置默认值
  const title = params.get("title") || "employee";
  const name = params.get("name") || "admin";
  return new Response(`Please address your request to ${title} called ${name}.`);
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:00:00