Node.js使用回调函数时如何正确定义及使用子变量?
问题原因
你的代码存在两处核心问题:
- 变量声明与基础类型限制问题:
y被定义为字符串基础类型,基础类型无法挂载自定义属性;且给y.lol赋值时多余加了var关键字,属于语法错误。 - 参数传递逻辑错误:调用
callback时你传递的是y.lol的值,回调函数中拿到的第二个参数res本身就是该值(字符串类型),无法再读取lol属性。
修正方案
方案1:传递完整对象到回调
如果需要在回调中访问对象的多个属性,直接传递整个对象即可:
function something(callback) { var x = 5; // 将y定义为对象类型,支持挂载自定义属性 var y = { content: 'anything' }; // 去掉多余的var关键字,直接给对象挂载属性 y.lol = 'hello'; // 传递整个y对象而非y.lol的值 callback(x, y); } something(function(req, res) { console.log(req); // 输出5 console.log(res.lol); // 输出hello });
方案2:仅传递y.lol的值到回调
如果只需要用到y.lol的内容,回调中直接打印第二个参数即可:
function something(callback) { var x = 5; var y = { content: 'anything' }; y.lol = 'hello'; callback(x, y.lol); } something(function(req, res) { console.log(req); // 输出5 console.log(res); // 输出hello });
内容的提问来源于stack exchange,提问作者HACHI
相关产品推荐
相关产品推荐

