
在JavaScript中,大括号 {} 在不同场景下有不同的用法,尤其是在变量声明和模块导入时,其作用和含义有明显区别。下面将详细解析这两种场景下大括号的用法。
一、声明变量时的大括号用法(解构赋值)
在变量声明场景下,大括号{}主要用于 对象解构赋值 ,这是ES6引入的特性,用于从对象中提取属性并赋值给变量。
1. 基本语法
// 从对象中提取属性并赋值给同名变量
const { name, age } = person;
// 从对象中提取属性并赋值给不同名变量
const { name: userName, age: userAge } = person;
// 设置默认值
const { name, age = 18 } = person;2. 关键特点
匹配机制 :通过属性名进行匹配,与顺序无关。
变量命名 :默认创建与属性同名的变量,也可使用冒号
:重命名。默认值 :可通过等号
=为可能不存在的属性设置默认值。嵌套解构 :支持从嵌套对象中提取属性。
const user = {
info: {
name: "张三",
address: {
city: "北京"
}
}
};
// 嵌套解构
const { info: { name, address: { city } } } = user;二、导入模块时的大括号用法(命名导入)
在模块导入场景下,大括号用于 命名导入 ,用于从模块中导入特定的命名导出。
1. 基本语法
// 导入单个命名导出
import { myFunction } from './module.js';
// 导入多个命名导出
import { myFunction, myVariable, myClass } from './module.js';
// 导入并重命名
import { myFunction as func } from './module.js';
// 结合默认导入和命名导入
import myDefault, { myFunction } from './module.js';2. 关键特点
对应关系 :导入的名称必须与模块中导出的命名一致(除非使用重命名语法)。
只读特性 :导入的命名导出是只读的,不能被修改。
按需加载 :使用命名导入可以只加载需要的部分,有助于Tree Shaking。
导入顺序 :多个命名导入的顺序不影响功能。
三、声明变量与导入模块时大括号用法区别

四、代码示例
// 1. 对象解构赋值示例
const person = {
name: "李四",
age: 25,
job: "开发者"
};
// 解构赋值
const { name, age, job } = person;
console.log(name); // "李四"
// 2. 模块导入示例
// module.js 内容:
// export const utils = { helper: () => console.log('帮助函数') };
// export const config = { apiUrl: 'https://api.example.com' };
// 导入模块中的命名导出
import { utils, config } from './module.js';
utils.helper(); // 输出: "帮助函数"
console.log(config.apiUrl); // "https://api.example.com"总结
在 变量声明 中使用大括号,是对象解构赋值语法,用于从对象中提取属性并赋值给变量。
在 模块导入 中使用大括号,是命名导入语法,用于从模块中导入特定的命名导出。
这两种用法虽然都使用大括号,但在语法本质、作用和使用规则上有明显区别。
理解这两种场景下大括号的正确用法,是掌握JavaScript现代语法和模块化开发的基础。