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
相关产品推荐
相关产品推荐

