es6 ...運算子 , rest 引數使用,與arguments引數的區別
阿新 • • 發佈:2019-01-10
展開運算子(類似巢狀)
可以用在陣列和物件上
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 }
剩餘運算子
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){ // rest為剩餘引數 console.log(a); // 1 console.log(rest); // [2,3] } test(1,2,3)
rest引數(剩餘引數,與...運算子一起使用)
function foo(a, b, ...rest) {
console.log('a = ' + a);
console.log('b = ' + b);
console.log(rest);
}
foo(1, 2, 3, 4, 5);// 結果:// a = 1// b = 2// Array [ 3, 4, 5 ]
Rest引數和arguments物件的區別:
- rest引數只包括那些沒有給出名稱的引數,arguments包含所有引數
- arguments 物件不是真正的陣列,而rest 引數是陣列例項,可以直接應用sort, map, forEach, pop等方法
- arguments 物件擁有一些自己額外的功能