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

Express.js中两段find方法代码的差异及无响应问题咨询

Express.js代码无法返回JSON响应的问题分析

我编写了一段Express.js代码(如下第一段),在浏览器中无法获取JSON响应;而讲师的代码(如下第二段)却可以正常返回。二者看似相同,想请教它们的区别:

第一段代码(无响应)

app.get("/api/products/1", (req, res) => {
  const singleProduct = products.find((product) => {
    product.id === 1;
  });
  res.json(singleProduct);
});

第二段代码(正常响应)

app.get("/api/products/1", (req, res) => {
  const singleProduct = products.find((product) => product.id === 1);
  res.json(singleProduct);
});

核心区别:箭头函数的返回值规则

两段代码的差异集中在find方法的箭头函数回调上:

  • 第一段用大括号{}包裹回调逻辑,但没有写return语句。JavaScript规定,带大括号的箭头函数必须显式使用return才能返回值,否则默认返回undefined。这导致find遍历所有产品时,每次回调都返回undefined(等价于false),最终找不到匹配项,singleProduct为undefined,res.json(undefined)无法输出有效JSON。
  • 第二段省略了大括号,属于箭头函数的简洁写法,这种情况下会自动返回箭头右侧表达式product.id === 1的结果。当遇到id为1的产品时,表达式返回true,find就会返回该产品对象,res.json就能正常返回对应的JSON数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:42:46