You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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]才能正确匹配到对应国家的键。

额外优化建议

  1. 减少重复访问:先把整个国家对象取出存到变量里,不用每次都重复写countries[givenCountry],更简洁高效。
  2. 容错处理:增加判断逻辑,若传入的国家不在countries对象中,提前返回并提示,避免后续代码因country为undefined而报错。
  3. 合并显示函数(可选):如果逻辑简单,可以把三个独立的显示函数合并,减少冗余代码:
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_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 20:48:23