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

如何从另一个函数访问对象与局部变量?JavaScript代码问题求助

问题分析与解决方案

你的代码核心问题是函数参数的作用域混淆:storeInfo函数里的Info参数是局部变量,和全局声明的Info不是同一个引用。你在函数内部给局部Info赋值,不会改变全局的空对象,最后调用returnInfo(Info)时用的还是全局空对象,自然拿不到姓名和年龄。另外storeInfo里调用returnInfo(Info)但没保存返回值,这步没有实际作用。

方案1:通过函数返回值传递数据(推荐,避免全局变量)

function storeInfo() {
    let name = prompt('enter your name:');
    let age = prompt('how old are you?');
    // 返回收集到的用户信息对象
    return {
        name: name,
        age: age
    }
}

function returnInfo(info) {
    return `${info.name} ${info.age}`;
}

// 先收集信息,再处理并弹窗
let userInfo = storeInfo();
let result = returnInfo(userInfo);
alert(result);

修改说明:

  • 移除了容易造成混淆的全局变量和函数参数
  • storeInfo直接返回收集到的信息,外部通过接收返回值获取数据
  • 逻辑清晰,避免了作用域冲突问题

方案2:通过全局对象传递数据(不推荐,尽量减少全局变量使用)

let info = {};
function storeInfo() {
    // 直接修改全局对象的属性
    info.name = prompt('enter your name:');
    info.age = prompt('how old are you?');
}

function returnInfo(info) {
    return `${info.name} ${info.age}`;
}

storeInfo();
let result = returnInfo(info);
alert(result);

修改说明:

  • 利用对象的引用类型特性,直接修改全局对象的内部属性,确保外部能获取到更新后的数据

内容的提问来源于stack exchange,提问作者A.Delkash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:51:29