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

2022-09-06 07:36:12 字數 1414 閱讀 8513

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, 說明arr和arr2指向同乙個陣列

console.log(arr===arr3); //false, 說明arr3和arr指向不同陣列

//把乙個陣列插入另乙個陣列字面量

var arr4 = [...arr, 4, 5, 6];

console.log(arr4);//[1, 2, 3, 4, 5, 6]

//字串轉陣列

var str = 'love';

var arr5 = [...str];

console.log(arr5);//[ 'l', 'o', 'v', 'e' ]

var arr = ['this is a string', 2, 3];

//傳統方式

var a = arr[0],

b = arr[1],

c = arr[2];

//解構賦值,是不是簡潔很多?

var [a, b, c] = arr;

console.log(a);//this is a string

console.log(b);//2

console.log(c);//3

var arr = [[1, 2, [3, 4]], 5, 6];

var [[d, e, [f, g]], h, i] = arr;

console.log(d);//1

console.log(f);//3

console.log(i);//6

//主要用於不定引數,所以es6開始可以不再使用arguments物件

var bar = function(...args)

}bar(1, 2, 3, 4);

//1//2

//3//4

bar = function(a, ...args)

bar(1, 2, 3, 4);

//1//[ 2, 3, 4 ]

rest運算子配合解構使用:

var [a, ...rest] = [1, 2, 3, 4];

console.log(a);//1

console.log(rest);//[2, 3, 4]

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

在es6中 按照一定的模式 從陣列中提取數值 對對應的變數進行賦值的操作 就叫做解構賦值 本質上來講 解構賦值 就是模式匹配 基本用法 var a,b,c 1,2,3 本質上,這種寫法屬於 模式匹配 只要等號兩邊的模式相同,左邊的變數就會被賦予 對應的值 1 如果想要解構賦值成功 那麼就必須保證兩邊...

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

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 ...