es6陣列賦值
阿新 • • 發佈:2019-01-07
1.陣列的解構賦值
//以前給變數賦值 let a=1,b=2,c=3 //在es6裡 可以這樣 // let [a,b,c]=[1,2,3] // console.log(a,b,c) let ary=['a','b'] // let [a,b,c]=ary // console.log(a,b,c)// a b undefinedlet arr=['aa','bb','cc','dd'] let [a,b,c]=arr console.log(a,b,c)
2.巢狀賦值
3.省略賦值
//es6的寫法:x取到ary中的第1項,y是ary的第5項 let [x,,,,y]=ary console.log(x,y)//1,5
4.不定引數的賦值
//這就是不定引數賦值 let [,,x,,...y]=[1,2,3,4,5,6,7,8,9] console.log(x,y)//3 ,[5,6,7,8,9]
5.預設值
let [f2,f3=2]=[1] console.log(f2,f3)//1 ,2 如果後邊有值 就取後邊的值 ,如果沒有 就取2 相當於是預設值
//es6裡邊的運算是嚴格運算的,判斷一個位置是否有值, 是用的===判斷,
function fn() { console.log("haha") } let [x=fn(),y=0]=[1] console.log(x,y)//1 ,0 //所以說只要變數在陣列中的位置不是undefined,fn函式就不會執行
針對es6中...的用法總結:
用法1:展開運算子(spread operator),作用是和字面意思一樣,就是把東西展開。可以用在array
和object
上都行,比如
let a = [1,2,3];
let b = [0, ...a, 4]; // [0,1,2,3,4]
let obj = { a: 1, b: 2 };
let obj2 = { ...obj, c: 3 }; // { a:1, b:2, c:3 }
let obj3 = { ...obj, a: 3 }; // { a:3, b:2 }
用法2:剩餘操作符(rest operator),是解構的一種,意思就是把剩餘的東西放到一個array
裡面賦值給它。一般只針對array
的解構
let a = [1,2,3];
let [b, ...c] = a;
b; // 1
c; // [2,3]
// 也可以
let a = [1,2,3];
let [b, ...[c,d,e]] = a;
b; // 1
c; // 2
d; // 3
e; // undefined
// 也可以
function test(a, ...rest){
console.log(a); // 1
console.log(rest); // [2,3]
}
test(1,2,3)