如何从另一个函数访问对象与局部变量?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
相关产品推荐
相关产品推荐

