JS代码报错:a未定义,如何正确返回匹配用户的name字段?
修复JavaScript代码中的'a is not defined'错误
问题原因
你代码里的a是find方法回调函数的局部变量,仅在箭头函数a => a.uid === data内部有效,if代码块中的return a.name无法访问到这个变量,因此抛出未定义错误。
修复方案
方案一:存储匹配结果到变量
先将find找到的用户对象存入变量,再通过变量访问name属性:
module.exports.get = function (data) { const _data = require("./data/Users.json"); const matchedUser = _data.find(a => a.uid === data); return matchedUser ? matchedUser.name : "User"; }
方案二:使用可选链简化代码(ES2020+支持)
利用可选链操作符?.避免未定义属性访问,再通过逻辑或||设置默认值:
module.exports.get = function (data) { const _data = require("./data/Users.json"); return _data.find(a => a.uid === data)?.name || "User"; }
性能优化建议
如果Users.json内容不会动态更新,建议将require移到函数外部,避免每次调用函数都重复加载文件:
const _data = require("./data/Users.json"); module.exports.get = function (data) { const matchedUser = _data.find(a => a.uid === data); return matchedUser ? matchedUser.name : "User"; }
内容的提问来源于stack exchange,提问作者Tanjiro Senpai
相关产品推荐
相关产品推荐

