陣列的解構賦值和擴充套件運算子

2021-10-23 09:28:52 字數 2557 閱讀 4655

在es6中 按照一定的模式 從陣列中提取數值 對對應的變數進行賦值的操作 就叫做解構賦值

本質上來講 解構賦值 就是模式匹配

基本用法

var

[a,b,c]=[

1,2,

3];

本質上,這種寫法屬於「模式匹配」,只要等號兩邊的模式相同,左邊的變數就會被賦予 對應的值

(1) 如果想要解構賦值成功 那麼就必須保證兩邊的模式完全一樣

var

[a,b,c]=[

1,[2

],];

console.

log(a,b,c)

;//1 [2]

(2).如果解構不成功 那麼變數的值就等於undefined

let

[s,t]=[

3];// console.log(s,t);

//3 , undefined 這個就像var 宣告了變數之後 不進行賦值

// let [s,t] = [3];

// console.log(s,t);

//3,undefined 這個也是屬於解構不成功 因為數值不夠

(3) 不完全解購的情況下 也可以進行解構賦值 只是後面放到數值裡的陣列都有多的數字

let

[x,y]=[

1,2,

3]; console.

log(x,y)

;//1,2

(4) 左邊可以為陣列 只要等號兩邊的模式相同就可以解析成功,可以用逗號隔開

let

[foo,

[[bar]

, baz]]=

[1,[

[2],

3]];

foo // 1

bar // 2

baz // 3

let[

,, third]=[

"foo"

,"bar"

,"baz"];

third // "baz"

(5) 可以用…鏈結,預設將左邊剩餘的全部賦值給帶有…的

let

[head,

...tail]=[

1,2,

3,4]

;head // 1

tail // [2, 3, 4]

let[x, y,

...z]=[

'a']

;x // "a"

y // undefined

z //

使用擴充套件運算子 就是乙個乙個的加到新陣列裡面去 所以即使原陣列發生變化 也不會影響新陣列

var arr=[1

,2,3

];var arr2=

[...arr]

//[1,2,3]

arr[0]

=10; console.

log(arr2)

;//[10,2,3]

擴充套件運算子的作用

​ 1.陣列合併 類似concat方法 都是淺拷貝

​ 2 如果修改了原陣列的指向 就會同步反應到新陣列 就是淺拷貝

​ 3.與解構賦值相結合

(1)與解構賦值相結合 給變數和陣列賦值

var

[s,...t]=[

1,2,

3,4,

5]; console.

log(s,t)

;//1 (4) [2, 3, 4, 5]

var[s,

...t]=[

];//undefined

(2).如果將運算子用於陣列賦值 只能放在引數的最後一位 否則會報錯

let

[a,...b,c]=[

1,2,

3,2,

9];//報錯

let[

...b,a,c]=[

1,2,

3,2,

9];//報錯

(3)擴充套件運算子可以將字串轉成真正的陣列

console.

log(

[...

"hello"])

;//["h", "e", "l", "l", "o"]

var str =

"hello"

; console.

log(str.

split(""

));["h", "e", "l", "l", "o"]

(4)只有函式呼叫時 擴充套件運算子才可以放到圓括號裡 否則這種寫法就會直接報錯

(

...arr1)

;//報錯

console.

log(

[...arr1]);

console.

log(

(...arr1));

//報錯

擴充套件運算子和解構賦值的理解

var foo function a,b,c var arr 1,2,3 傳統寫法 foo arr 0 arr 1 arr 2 使用擴充套件運算子 foo arr 1 2 3 陣列深拷貝 var arr2 arr var arr3 arr console.log arr arr2 true,說明ar...

擴充套件運算子解構賦值物件注意點

1 解構賦值的拷貝是淺拷貝,即如果乙個鍵的值是復合型別的值 陣列 物件 函式 那麼解構賦值拷貝的是這個值的引用,而不是這個值的副本。let obj let obj obj.a.b 3 console.log x.a.b 32擴充套件運算子的解構賦值,不能複製繼承自原型物件的屬性。let o1 let...

擴充套件賦值運算子以及關係運算子

如 int a 3 賦值就是把3的值給予變數a.擴充套件賦值運算子 運算子用法舉例 等效的表示式 a b a a b a b a a b a b a a b a b a a b a b a a b 其他用法舉例 int a 2 int b 3 a b 3 相當於a a b 3 a b 3 相當於a ...