如何基于字符串数组通过循环创建可导出的命名函数?
解决方案
你可以通过构建一个包含动态生成函数的对象,再利用ES模块的对象展开语法导出所有函数,完全不需要eval,还能满足直接导入调用的需求。
实现代码
// 假设你已定义好 extractData 函数和 jsonObject 数据 function extractData(data) { // 你的数据提取逻辑 return data; } const jsonObject = [ ["variable_name1", "value1", "value2", "value3"], ["variable_name2", "value1", "value2", "value3"] ]; const variableNames = [ "myFunctionName1", "myFunctionName2" ]; // 方式1:用 forEach 构建函数对象 const exportFunctions = {}; variableNames.forEach((funcName, index) => { exportFunctions[funcName] = () => extractData(jsonObject[index]); }); // 方式2:用 Object.fromEntries 简化写法(更优雅) // const exportFunctions = Object.fromEntries( // variableNames.map((funcName, index) => [funcName, () => extractData(jsonObject[index])]) // ); // 导出所有动态生成的函数 export { ...exportFunctions };
使用方式
在其他脚本中可以直接导入并调用:
import { myFunctionName1, myFunctionName2 } from './你的模块文件名.js'; // 直接调用函数 console.log(myFunctionName1()); console.log(myFunctionName2());
这种方式既避免了eval的安全风险,又能让函数以命名导出的形式存在,完全符合你想要的优雅效果。
内容的提问来源于stack exchange,提问作者Simbaclaws
相关产品推荐
相关产品推荐

