JavaScript对象嵌套元素访问问题:函数参数无法正确取值求助
问题解决:用变量作为对象键访问属性的正确方式
你的核心问题是对象属性访问的语法错误:你写的countries.givenCountry会让JS去查找countries里名为"givenCountry"的固定属性,而不是用参数givenCountry的实际值(比如"Scotland")作为键来访问目标国家数据。
正确写法
把点语法改成方括号语法,用变量作为键来访问对象属性:
function showCountryInformation(givenCountry) { // 用变量作为键,通过方括号语法获取对应国家对象 const country = countries[givenCountry]; // 容错处理:如果传入的国家不存在,直接返回避免报错 if (!country) { console.log(`找不到对应国家:${givenCountry}`); return; } showCountryName(country.name); showCountryCapital(country.capital); showCountryPopulation(country.population); }
为什么原来的写法不行?
- 点语法(
obj.property)只能用字面量属性名,比如countries.Scotland是合法的,因为Scotland是固定的属性名字面量。 - 当需要用变量的值作为属性名时,必须用方括号语法(
obj[variable]),这里givenCountry是变量,所以要用countries[givenCountry]才能正确匹配到对应国家的键。
额外优化建议
- 减少重复访问:先把整个国家对象取出存到变量里,不用每次都重复写
countries[givenCountry],更简洁高效。 - 容错处理:增加判断逻辑,若传入的国家不在
countries对象中,提前返回并提示,避免后续代码因country为undefined而报错。 - 合并显示函数(可选):如果逻辑简单,可以把三个独立的显示函数合并,减少冗余代码:
function renderCountryInfo(country) { document.getElementById('name').textContent = country.name; document.getElementById('capital').textContent = country.capital; document.getElementById('population').textContent = country.population; } // 主函数里直接调用即可 renderCountryInfo(country);
修改后调用showCountryInformation("Scotland")就能正确获取并显示苏格兰的信息了。
内容的提问来源于stack exchange,提问作者techie_
相关产品推荐
相关产品推荐

