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

如何用ES6单行导出JavaScript文件内所有非对象包裹的函数?

关于ES6默认导出所有独立转换函数的问题

嘿,这个问题问得挺实用的——毕竟谁都想少写点重复代码对吧?先直接给你答案:ES6原生语法里并没有一行export default all;这种自动导出所有顶级函数的写法,因为JS引擎根本不知道all指的是什么,除非你自己手动把这些函数打包成一个值。

不过别担心,我们有非常接近的简洁写法来实现你的需求:


最优解决方案:手动打包成对象后默认导出

既然你所有的转换函数都是单独定义的,只需要把它们统一放到一个对象里(ES6的对象简写语法能帮你省很多事),然后默认导出这个对象就行,几乎是“一行核心代码”的效果:

// converters.js - 你的转换函数文件
function metersToFeet(value) {
  return value * 3.28084;
}

function litersToGallons(value) {
  return value * 0.264172;
}

// 用ES6对象简写打包所有函数,然后默认导出
export default { metersToFeet, litersToGallons };

然后在主文件里导入的时候,直接用:

import converters from './converters.js';

// 调用示例
converters.metersToFeet(5); // 输出约16.4042

补充:如果想用命名导出的批量导入

如果你不想用默认导出,也可以给每个函数加上export前缀,然后用批量导入的方式拿到所有函数:

// converters.js
export function metersToFeet(value) { /* ... */ }
export function litersToGallons(value) { /* ... */ }

主文件导入:

import * as converters from './converters.js';
// 同样可以用converters.metersToFeet(...)调用

这种方式不需要手动打包对象,但导入的时候必须用import * as语法,而不是直接默认导入。


为什么export default all;不行?

再啰嗦两句原理:ES6的默认导出要求你明确指定一个导出值(可以是对象、函数、基本类型等),而all并不是JS原生提供的“自动收集所有顶级标识符”的变量——你必须自己定义它,比如const all = { ... },否则引擎会报错all is not defined。

所以总结下来,最贴合你需求的就是打包成对象后默认导出的写法,既简洁又符合ES6规范,还能让你的代码结构更清晰。

内容的提问来源于stack exchange,提问作者JakAttk123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:38:43