javascript - 通过 json 中的键访问值会抛出 undefined

标签 javascript json node.js typescript

你好,我面临一个奇怪的错误,我有一个下面的对象

    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;
    }

但是当我尝试在我的 nodejs 代码中使用 dataFromUrl.geography.length 时,出现以下错误:

[ 'TypeError: Cannot read property 'length' of undefined']

当我的目标是 es5 时,这段代码正在运行,但一旦我将目标更改为 es6,它就开始崩溃。有谁知道为什么会突然发生这种情况吗?

最佳答案

查看完评论后,我可能的猜测是您正在调用不带参数的 getGeoUnitId() ,并且它使用的是您可能已更改的外部定义的 getGeoUnitId

尝试重命名参数变量名称

function getGeoUnitId(somethingOtherThan_dataFromUrl) {

提示:如果您在理解 JS 代码时遇到问题,您应该使用 Chrome(或任何其他浏览器)的开发人员工具并添加调试器来查看代码流程、变量如何赋值、更新位置等等...

关于javascript - 通过 json 中的键访问值会抛出 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50846554/

相关文章:

javascript - HTML 按钮加载提交

javascript - 当我尝试从 JavaScript 数组中删除 JSON 对象时收到错误消息

javascript - 如何在 iPad 上使用 JavaScript/Obj-C 将图像保存到照片库?

c# - .NET 对象最灵活的序列化是什么,但实现起来很简单?

php - 如何解码来自 facebook 的 Json 响应

angularjs - YouTube 分析 - 创建请求

javascript - flatpickr 配置 - 如何为新记录设置今天日期的默认日期,但在更新现有记录时保留存储的值

javascript - 使用来自 Ajax 响应的 JSON 数据数组?

node.js - sudo apt-get install npm 未安装

javascript - 使用 ES6 Proxy 会导致任何函数调用 "is not a function"