使用NASA API访问absolute_magnitude_h属性时JavaScript报错求助
解决访问JSON属性时的TypeError问题
嘿,我来帮你搞定这个报错!
错误根源
你写的代码里有个很容易踩的语法坑:jsonData.near_earth_objects[2015-09-07][0] 中的 2015-09-07 会被 JavaScript 当成数学减法运算(2015 - 9 - 7 = 1989),而不是你想要的字符串键 "2015-09-07"。
这就导致你实际在访问 near_earth_objects[1989],这个键在你的JSON数据里根本不存在,所以返回 undefined。接着你试图访问 undefined 的 [0] 属性,自然就抛出了 Cannot read property '0' of undefined 的错误。
正确写法
只需要把日期键用引号包裹起来,让JS识别成字符串即可:
// 方法1:直接用字符串键访问 console.log(jsonData.near_earth_objects["2015-09-07"][0].absolute_magnitude_h); // 方法2:把日期存成变量,更清晰(适合动态日期场景) const targetDate = "2015-09-07"; console.log(jsonData.near_earth_objects[targetDate][0].absolute_magnitude_h);
额外注意事项
- 先确认数据结构:可以先打印
console.log(jsonData.near_earth_objects),检查里面是否真的包含"2015-09-07"这个键,以及对应的数组是否有至少一个元素。 - 关于你提供的测试API:这个接口返回的是单个近地天体的详情,它的
absolute_magnitude_h是直接在根对象中的,不需要通过near_earth_objects访问,比如直接写console.log(jsonData.absolute_magnitude_h)就能拿到值。如果这是你误选的测试链接,忽略这条就行~
内容的提问来源于stack exchange,提问作者mrmicro66
相关产品推荐
相关产品推荐

