ES6:變量的解構賦值

1、數組的解構賦值

1.1、基本用法

ES6 允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構(Destructuring)。
很久很久以前,我們為這里賦值,只能直接指定值。

let a = "x";
let b = "x";
let c = "b";

現在,用ES6,我們可以寫成:

let [a, b, c] = ["x", "x", "b"];

使用嵌套數組進行結構例子。

let [a, ...b] = [1, 2, 3, 4];
// 輸出
a // 1
b // [2, 3, 4]
解構賦值
let [x, y, ...z] = ["x"];
x // "x"
y // undefined
z // []
解構賦值

如果解構不成功,變量的值就等于undefined

let [x] = [];
let [a, b] = [1];
解構賦值

1.2、默認值

解構賦值允許指定默認值。

let [a = true] = [];
let [x, y = "b"] = ["a", "diudiudiu"];
let [o, p = "hehe'] = ["haha", undefined];

注意,ES6 內部使用嚴格相等運算符(===),判斷一個位置是否有值。所以,如果一個數組成員不嚴格等于undefined,默認值是不會生效的。

解構賦值

2、對象的解構賦值

let {a, b} = {a: "x", b: "y"};

對象的解構與數組有一個重要的不同。數組的元素是按次序排列的,變量的取值由它的位置決定;而對象的屬性沒有次序,變量必須與屬性同名,才能取到正確的值。


對象解構賦值

如果變量名與屬性名不一致,必須寫成下面這樣。

let {a: c} = {a: "x", b: "y"};
c // x

let o = {first: "x", last: "b"};
let {first: f, last: l} = o;
對象解構賦值

這實際上說明,對象的解構賦值是下面形式的簡寫。

let { foo: foo, bar: bar } = { foo: "x", bar: "b" };

也就是說,對象的解構賦值的內部機制,是先找到同名屬性,然后再賦給對應的變量。真正被賦值的是后者,而不是前者。

let {a: c} = {a: "x", b: "y"};

上面代碼中,a是匹配的模式,c才是變量。真正被賦值的是變量c,而不是模式a

對象解構賦值

對象的解構也可以指定默認值。

let {a: b = 1} = {a: 0};
let {x: y = 3} = {x: 5};
對象解構賦值

默認值生效的條件是,對象的屬性值嚴格等于undefined。
如果解構不成功,變量的值就等于undefined

let {a} = {b: "c"};
a // undefined

由于數組本質是特殊的對象,因此可以對數組進行對象屬性的解構。

let arr = [1, 2, 3];
let {0: first, [arr.length - 1]: last} = arr;
first // 1
last // 3
對象解構賦值

數組arr0鍵對應的值是1[arr.length - 1]就是2鍵,對應的值是3

3、字符串的解構賦值

字符串也可以解構賦值。這是因為此時,字符串被轉換成了一個類似數組的對象。

let [a, b, c] = "xxb";
字符串解構賦值

類似數組的對象都有一個length屬性,因此還可以對這個屬性解構賦值。

let {length: len} = "xxb666";
字符串解構賦值

————
前端·小b
紙上學來終覺淺,絕知此事要躬行

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.數組的解構賦值 2.對象的解構賦值 3.字符串的解構賦值 4.數值和布爾值的解構賦值 5.函數參數的解構賦值 ...
    卞卞村長L閱讀 922評論 0 0
  • 1、數組的解構賦值 1.1、基本用法 ES6 允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構...
    開車去環游世界閱讀 152評論 0 0
  • 基本概念 只要某種數據結構具有Iterator接口都可以采用解構賦值和for of循環 如:1數組(有序)2對象(...
    coolheadedY閱讀 267評論 0 0
  • 針對ES6的變量賦值的有六種方式 默認數組對象字符串數值與布爾值函數 1,解構賦值允許指定默認值。 2,數組的解構...
    sponing閱讀 209評論 0 1
  • 當你在努力成長時,如果有其他人嘲笑你,你完全可以無視他們的嘲弄。 原因很簡單: 他們并不知道自己在嘲笑什么。 真正...
    寶中的寶閱讀 684評論 0 0