你好我面临一个奇怪的错误,我有一个下面的对象
let dataFromUrl = {
"careerTrackId": 510,
"country": [],
"geography": [18],
"ou2": [51549564],
"ou3": [],
"ou4": [],
"ou5": [],
"ou6": [],
"ou7": [],
"ou8": [],
"region": []
}
console.log(dataFromUrl.geography.length);
// Here in this method iam using this dataFromUrl
function getGeoUnitId(dataFromUrl) {
console.log("dataFromUrl",dataFromUrl);
console.log("dataFromUrl.geography",dataFromUrl.geography);
console.log("dataFromUrl.ou2",dataFromUrl.ou2);
console.log("dataFromUrl.careerTrackId",dataFromUrl.careerTrackId);
let geoUnitId = "(" + dataFromUrl.geography + ")";
let str2 = "geounitid IN " + geoUnitId;
if (dataFromUrl.geography.length == 0) {
str2 = "";
}
return str2;
}

但是当我尝试在我的dataFromUrl.geography.length
代码中使用nodejs
时,我会收到以下错误:
[' TypeError:无法读取属性'长度'未定义']
当我将目标更改为es6时,当我的目标是es5 bu时,此代码正在运行,它开始中断。是否有任何人知道为什么会突然发生这种情况。
答案 0 :(得分:0)
在完成评论之后,我可能的猜测是你在没有参数的情况下调用getGeoUnitId()
并使用你可能已经更改过的getGeoUnitId
外部。
尝试重命名参数变量名称
function getGeoUnitId(somethingOtherThan_dataFromUrl) {
提示:如果您在理解JS代码时遇到问题,则应使用Chrome(或任何其他浏览器)开发人员工具并添加调试器以查看代码流,如何为变量分配值,将它们放在何处更新等等...
答案 1 :(得分:0)
最后,我能够解决它,我仍然不知道为什么但这有效: JSON.parse()做了这个伎俩。
let dataFromUrl = {
"careerTrackId": 510,
"country": [],
"geography": [18],
"ou2": [51549564],
"ou3": [],
"ou4": [],
"ou5": [],
"ou6": [],
"ou7": [],
"ou8": [],
"region": []
}
function getGeoUnitId(dataFromUrl) {
console.log("dataFromUrl",dataFromUrl);
console.log("dataFromUrl.geography",dataFromUrl.geography);
console.log("dataFromUrl.ou2",dataFromUrl.ou2);
console.log("dataFromUrl.careerTrackId",dataFromUrl.careerTrackId);
let geoUnitId = "(" + dataFromUrl.geography + ")";
let str2 = "geounitid IN " + geoUnitId;
if (dataFromUrl.geography.length == 0) {
str2 = "";
}
return str2;
}
dataFromUrl = JSON.parse(dataFromUrl );
console.log(dataFromUrl.geography.length); // this started giving me 1