javascript中对象解构提取命名导出,本质是import语句直接结合解构语法:用花括号指定导出项名,如import { foo, bar } from './m.js',支持重命名(as)和混合导入默认导出,但不可解构未导出或默认导出项。

JavaScript 中对象解构提取模块导出的命名对象,本质是把 import 语句和解构赋值结合使用——不是先导入整个对象再解构,而是直接在 import 中用花括号写明要取哪些命名导出项。
语法:直接在 import 中用花括号解构
模块中用 export const name = ...、export function fn() {...} 等方式导出的变量,统称“命名导出(named exports)”。导入时必须用对应名称,并放在花括号内:
-
import { foo, bar } from './module.js';→ 提取foo和bar两个命名导出 -
import { foo as myFoo } from './module.js';→ 重命名导入,foo变成myFoo -
import { foo, bar as b } from './module.js';→ 混合使用原名与别名
注意:不能解构默认导出或未声明的名称
命名导出必须严格匹配导出时的标识符名。常见错误包括:
- 写错大小写(如导出
userName,却写{ username })→ 报undefined或运行时报错 - 试图解构一个只存在默认导出(
export default ...)的模块 → 必须用import xxx from '...',花括号会报错 - 解构了模块里没导出的变量名 → 导入值为
undefined,不报错但逻辑可能出问题
配合默认导出一起使用
一个模块可以同时有默认导出和多个命名导出。此时可用组合语法:
-
import def, { foo, bar } from './module.js';→def接收默认导出,{foo, bar}解构命名导出 -
import def, * as mod from './module.js';→def是默认导出,mod是包含所有命名导出的命名空间对象(如mod.foo)
实际例子
假设 mathUtils.js 内容如下:
export const PI = 3.14159;
export function add(a, b) { return a + b; }
export function multiply(a, b) { return a * b; }
export default function sqrt(x) { return Math.sqrt(x); }在另一个文件中可这样提取:
-
import sqrt, { PI, add } from './mathUtils.js';→ 得到默认函数sqrt,以及常量PI和函数add -
import { add as sum, multiply as mul } from './mathUtils.js';→ 重命名后使用,避免命名冲突
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











