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