调用返回对象的jQuery函数,得到undefined()而非undefined的问题
解决变量返回
undefined()的问题 首先咱们先搞清楚核心问题:你看到的undefined()并不是JS原生的undefined值,而是一个名叫undefined的函数。这说明你的代码里要么不小心把undefined这个标识符覆盖成了函数,要么负责获取值的函数错误地返回了这个自定义的undefined函数。结合你说控制台能输出正确的对象,大概率是返回环节出了问题,咱们一步步排查:
1. 检查是否意外覆盖了全局undefined
先看看代码里有没有类似这种低级错误:
// 不小心把undefined定义成了函数 function undefined() {} // 或者给全局的undefined赋值了函数 window.undefined = function() {};
如果有这种代码,赶紧删掉!undefined在JS里本来是全局的原始值,把它改成函数肯定会搞乱逻辑。
2. 检查获取值函数的返回语句
你说控制台能输出正确的对象({"totalPayment":"123","nameVal":"John Smith"...}),说明函数内部已经正确组装了数据,但返回的时候写错了。比如可能是这样:
function getFormValues() { let formData = { totalPayment: $('#totalPayment').val(), nameVal: $('#nameVal').val(), // 其他字段... }; console.log(formData); // 这里能正确输出对象 // 错误写法:返回了自定义的undefined函数 return undefined; }
把这里的return undefined;改成return formData;就对了!让函数返回你组装好的那个对象。
3. 确认函数调用方式是正确的
确保你是执行函数而不是直接把函数本身赋值给变量:
// 正确:调用函数,拿到返回值 let result = getFormValues(); // 错误:只是把函数引用赋值给变量,不会拿到页面值(不过这种情况打印出来是函数本身,不是undefined(),但还是要确认) let result = getFormValues;
最后测试验证
修改完之后,再打印变量看看:
let result = getFormValues(); console.log(result); // 应该输出你期望的对象:{"totalPayment":"123","nameVal":"John Smith"...}
如果还是有问题,可以把完整的函数代码贴出来,咱们再进一步排查,但按照你描述的情况,上面的步骤应该能解决问题。
内容的提问来源于stack exchange,提问作者acaputo
相关产品推荐
相关产品推荐

