✨ js-💕解构赋值
👉本知识来源于 现代js技术 ,本文章来自于一个前端小白的总结与归纳,致敬每一位在前端正在努力的人🍻
👀本文可以学到的:变量交换、数组解构赋值、对象解构赋值、嵌套解构、智能函数参数。
解构赋值 是一种特殊的语法,它使我们可以将数组或对象“拆包”为到一系列变量中,因为有时候使用变量更加方便。解构操作对那些具有很多参数和默认值等的函数也很奏效。
// 解构赋值
let arr = ["I","love"];
let [f,s] = arr;
console.log(f); //I
console.log(s); // love
// 字符串切割解构赋值
let [f1,s1] = "I Love".split(" ");
console.log(f1); // I
console.log(s1); // Love
// 解构 使用都逗号忽略元素
let [a,,c] = ["L","Z","C"]
console.log(c); // C
// 任何可迭代对象,不仅限于数组
let [a1,b1,c1] = "abc";
let [one, two, three] = new Set([1,2,3]); // 1, 2, 3
// 赋值到对象属性
let user = {};
[user.name, user.surname] = "I ZE".split(" ");
console.log(user.name);
// 相对于Object.entries(obj) 会返回一个实体, 即键——值(key, value)
// .entries() 与解构赋值一同使用遍历
let user1 = {
name: "LaiZeChang",
sex: "男"
};
// 循环遍历键值对
for (let [key, value] of Object.entries(user1)) {
console.log(`${key}:${value}`)
}
let map = new Map();
map.set("name","小张");
map.set("age","20");
for (let [key, value] of map) {
console.log(`${key}:${value}`)
}
// 变量交换
let guest = "Jane";
let admin = "Pete";
[guest, admin] = [admin, guest];
console.log(`${guest} ${admin}`)
// 取前面的值, 收集后面元素 用 (...数组名)
let [a3,b3,...rest] = ["Lai","Ze","Change","hhh","xiaolaiji"];
console.log(`${a3} ${b3} ${rest[0]} ${rest.length}`)
// 解构赋值 默认值
let [a4 = "DU", b4 = "DC"] = ["luck"];
console.log(`${a4} ${b4}`);
// 默认值还可以赋值 函数或表达式
function aa(){
return "执行函数";
}
// let [a5 = aa(), b5 = aa(), c5 = alert("c5执行函数")] = ['我不执行函数'];
// console.log(`${a5} ${b5}`);
// 对象解构赋值
let options = {
title: "hhh",
width: 100,
height: 200
}
// 左边的变量名如果存在对象中,就会直接对应对象的属性中,可以不按顺序
// let {title, width, height} = options; // title = hhh
// 对象解构赋值 可以将属性名指定其他名字 使用冒号 指定
let {title : t, height: h, width: w} = options;
// 对象解构赋值 设置 默认值
// let {width = 100, height = 200 , title} = options;
// 设置默认值也可以是函数 或 表达式 当对象没有该属性时 如 无属性width
let {width = prompt("width?"), title = prompt("title?")} = options;
// alert(width)
// 冒号和等号可以共同使用 : =
// 对于对象多属性 可以单独获取所需内容
// let { title } = options;
// 对象属性 剩余模式(...)
// let {title, ...rest} = options;
// alert(rest.height)
// 嵌套解构 对象中存在的对象和数组,提取对象里面的值,也要对应对象结构提取
let op1 = {
size: {
wid: 100,
heitht: 200
},
itmes: ["A","B"],
extar: true
};
// let {
// size: {
// wid,
// heitht
// },
// items: [i1,i2],
// titl = "Menu" //对象不存在就使用默认值
// } = op1;
智能函数参数
一个函数有很多参数,大部分参数是可选的,也是按顺序的,如果没有传入值就会undefined。
如果还要不传入参数采用默认值的情况下,又要不考虑顺序。
可以使用对象解构赋值 ,它可以不按照顺序,但是解构的变量名必须存在对象的属性名当中。
// 不好的例子
function showMenu(title = "Untitled", width = 200, height = 100, items = []) {
// ...
};
// 在采用默认值就可以的位置设置 undefined
showMenu("My Menu", undefined, undefined, ["Item1", "Item2"]);
// 合理的方法: 传递一个函数给对象
let options = {
title: "menu",
item : ["C","V"]
};
// 对象属性值长的时候可以用冒号指定变量名
function showMent1({title = "默认值", width: w = 200, height = 300, item = []}) {
// title, item 提取 op2
// width, height - 提前默认值
alert(`${title} ${w} ${height}`);
alert(item)
}
// 想所有参数都是用默认值,就要必须传一个空对象,否则会报错
showMent1({});
// 另一种解决方法 赋一个空对象 {} 为默认值 就不需要取全部默认值时传个空对象 {}
function showMent({title = "默认值", width: w = 200, height = 300, item = []} = {}) {
…………
}
// 函数参数给予默认值就不需要传 {}
showMent()
Your past is not your potential. In any hour you can choose to liberate the future.
你的潜力不在于过去,你随时都可以去解放未来。
本文作者:小赖不赖
本文链接:https://www.cnblogs.com/lazyxlai/p/15501669.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构