对象解构重命名用{原属性名:新变量名}语法,可避免冲突、提升语义;支持多字段、默认值(仅undefined触发)、嵌套重命名;重命名后原属性名不可访问。

对象解构赋值时重命名变量,用冒号 : 指定新变量名,语法是 { 原属性名: 新变量名 }。这在避免命名冲突、提升语义清晰度或适配已有变量规范时特别实用。
基础重命名写法
原对象属性名不变,只改变接收值的变量名:
-
const { name: userName } = { name: "Alice" };→userName的值为"Alice" -
const { id: userId, role: userRole } = { id: 101, role: "admin" };→ 同时重命名多个字段
重命名 + 默认值组合使用
即使重命名了,也能为缺失属性设置默认值,且默认值逻辑只在原属性为 undefined 时生效:
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
-
const { email: userEmail = "no@domain.com", name: fullName = "Anonymous" } = { name: "Bob" };→userEmail是默认值,fullName是"Bob" - 注意:
null、0、false等“falsy”值不会触发默认值,只有undefined会
嵌套结构中重命名深层字段
可在嵌套解构路径中任意一层使用重命名,保持可读性:
-
const { data: { list: items = [] } } = { data: { list: ["a", "b"] } };→ 把data.list重命名为items -
const { config: { timeout: requestTimeout = 5000 } } = { config: {} };→ 深层属性重命名并设默认值
常见误区提醒
重命名后,原属性名(如 name)不再声明为变量,直接访问会报 ReferenceError:
- ❌ 错误:
const { name: userName } = { name: "Tom" }; console.log(name);→name is not defined - ✅ 正确:
console.log(userName);才能拿到值 - 重命名不改变原对象,只是创建新绑定;也不影响其他未解构的属性

















