JavaScript学习日记 : Day23 - 解构赋值

解构赋值(Destructuring Assignment)是一个在ES6的新特性,用於提取阵列或物件中的资料,解构赋值可以想像是镜子的概念,将右方的资料往左边送,然後会一个位置对一个值 (但没有像镜子左右颠倒)。

数组

过去阵列内的元素在赋值的时候只能透过底下例子:

let users = ["John", "David","Tina"];
let userA = users[0];
let userB = users[1];
let userC = users[2];

console.log(userA, userB, userC); // John, David, Tina

解构赋值会镜像的把右边的资料往左边送:

let [userA, userB, userC] = ["John", "David","Tina"];
console.log(userA, userB); // John, David, Tina
let users = ["John", "David","Tina"];
let [userA, userB, userC] = users;

console.log(userA, userB, userC); // John, David, Tina

特殊情况:

// 1. 输入的变数多於右边的值
let [userA, userB, userC, userD] = ["John", "David","Tina"];
console.log(userA, userB, userC, userD); // John David Tina undefined

// 2. 输入的变数少於右边的值
let [userA, userB,, userD] = ["John", "David","Tina","Una"];
console.log(userA, userB, userD); // John David Una

// 3. 解构中有预设值
let [userA, userB, userC = "Jack", userD = "Una"] = ["John", "David","Tina"];
console.log(userA, userB, userC, userD); // John David Tina Una

// 4. String
let str = "一只小猫";
let [a,b,c,d] = str;
console.log(a,b,c,d); // 一 只 小 猫

// 5. 交换变数
let a = 123;
let b = 456;
[a,b] = [b,a];
console.log(a,b) // 456 123

物件

与数组不同在於数组是根据索引(index)来对应,而物件是根据属性名称来对应。

过去物件只能透过以下例子:

let cat = {
    name :"white cat",
    color : 'white',
    weight: 5
}

let name = cat.name;
let weight = cat.weight;

解构赋值可以非常简短的达到一样的效果:

let { name, weight} = cat;

也能重新命名:

let { name : newName, weight} = cat; // newName : white cat

<<:  day20 在ui蒐集flow,能取代liveData吗?

>>:  DAY23-一般页面设计

Day 8 中断服务处理机制与分配器

上篇说到排程器的部分,有个地方需要注意的是,如果因为硬体要求中断排程的优先权,此时就会有个中断服务的...

什麽是物件导向程序设计 (Object-oriented programming)

什麽是物件导向程序设计? 物件导向程序设计 (Object-oriented programming...

D6 - 你不知道 Combo : 主菜 Scope 字汇环境

前言 前一章解释 Hoising 时说到,JavaScript 一开始会先记下变数名称 和 Func...

D16 - 用 Swift 和公开资讯,打造投资理财的 Apps { 加权指数 K 线图实作.4 - 在 X 轴标上每一根 K 棒的日期 }

目前我们已经做出台股加权指数的 K 线图,但目前进度的线图的 x 轴没有时间,所以当使用者看到这张图...

[09] 防止 telegram bot 错误

如果只是向上一篇一样最後会有各种错误 因为 telegram bot 会将加入群组等都传送过来所以需...