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

如何在JavaScript中从其他JS文件的函数获取返回数据?

解决方案

首先先修正你user.js里的一个关键问题:localStorage.getItem返回的是字符串类型,直接访问data.user会报错,需要先通过JSON.parse解析,同时要处理数据不存在的情况:

// user.js 修正后的代码
export default function getUser() {
    const dataStr = localStorage.getItem("user-account");
    // 处理数据不存在的情况,避免后续报错
    if (!dataStr) {
        return null; // 也可以返回 { ID: '', Name: '' } 这类默认空对象
    }
    const data = JSON.parse(dataStr);
    const user = {
        ID: data.user.ID,
        Name: data.user.Name, 
    };
    return user;
}

下面提供两种满足你需求的实现方式:

方案1:ES模块导入使用(推荐)

这是现代JS项目的标准做法,不会造成全局变量污染:

  1. 在需要调用的JS文件中导入函数:
// 比如在index.js中
import getUser from './user.js';

// 调用函数获取user对象
const currentUser = getUser();
// 后续可以直接使用currentUser
console.log(currentUser?.ID, currentUser?.Name);
  1. 在HTML中引入脚本时,需要给script标签加上type="module":
<script type="module" src="./index.js"></script>

方案2:挂载为全局函数

如果必须让函数全局可用,可以将其挂载到window对象上:

  1. 修改user.js:
// user.js
function getUser() {
    const dataStr = localStorage.getItem("user-account");
    if (!dataStr) {
        return null;
    }
    const data = JSON.parse(dataStr);
    const user = {
        ID: data.user.ID,
        Name: data.user.Name, 
    };
    return user;
}

// 挂载到window对象,成为全局函数
window.getUser = getUser;
  1. 在其他JS文件中直接调用:
// 任意JS文件中无需导入,直接调用
const currentUser = getUser();
console.log(currentUser);
  1. HTML中按顺序引入脚本即可:
<script src="./user.js"></script>
<script src="./你的其他文件.js"></script>

注意事项

  • 确保你存入localStorage的user-account是JSON格式的字符串,比如通过localStorage.setItem("user-account", JSON.stringify({user: {ID: 1, Name: "张三"}}))存入,否则JSON.parse会报错。
  • 全局挂载函数容易造成变量冲突,优先使用ES模块方案。

内容的提问来源于stack exchange,提问作者Sulthon Maulana Fathuddin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:05:29