- ...์ ํ๋๋ก ๋ญ์ณ์ ธ ์๋ ์ฌ๋ฌ ๊ฐ๋ค์ ์งํฉ์ ํผ์ณ์ ๊ฐ๋ณ์ ์ธ ๊ฐ๋ค์ ๋ชฉ๋ก์ผ๋ก ๋ง๋ฌ.
- Array, String, Map, Set, DOM์ปฌ๋ ์ (NodeList, HTMLCollection), arguments์ ๊ฐ์ด for of๋ฌธ์ผ๋ก ์ํํ ์ ์๋ ์ดํฐ๋ฌ๋ธ์ ํ์ ๋จ.
๐ ์คํ๋ ๋์ ๊ฒฐ๊ณผ๋ฌผ์ ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๊ณ , ๋ค์๊ณผ ๊ฐ์ด ์ผํ๋ก ๊ตฌ๋ถํ ๊ฐ์ ๋ชฉ๋ก์ ์ฌ์ฉํ๋ ๋ฌธ๋งฅ์์๋ง ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
๐พ #1 Math.Max๋ฉ์๋์์ ์ฌ์ฉ
const arr = [2,5,1];
console.log(Math.Max(arr)); // NaN
console.log(Math.Max(...arr)) // 5
๐พ #2 Restํ๋ผ๋ฏธํฐ์์ ์ฐจ์ด์
function foo(...rest){
console.log(rest); // 1,2,3 -> [1,2,3]
}
foo(...[1,2,3]); // [1,2,3] -> 1,2,3
// ES5
var arr = [1,2].concat([3,4]);
console.log(arr); // [1,2,3,4]
//ES6
const arr = [...[1,2], ...[3,4]];
console.log(arr); // [1,2,3,4]
๐พ #1
// ES5
var arr1 = [1,4];
var arr2 = [2,3];
// ๊ธฐ๋ํ ๊ฒฐ๊ณผ๊ฐ ์๋
arr1.splice(1,0,arr2);
console.log(arr1); // [1,[2,3],4]
๐พ #2
var arr1 = [1,4];
var arr2 = [2,3];
Array.prototype.splice.apply(arr1, [1,0].concat(arr2));
console.log(arr1); // [1,2,3,4]
๐พ #3 ์คํ๋ ๋ ๋ฌธ๋ฒ ์ฌ์ฉ
// ES6
const arr1 = [1,4];
const arr2 = [2,3];
arr1.splice(1,0, ...arr2);
console.log(arr1); // [1,2,3,4]
// ES5
var origin = [1,2];
var copy = origin.slice();
console.log(copy); // [1,2]
console.log(copy === origin); //false
//ES6
const origin = [1,2];
const copy = [...origin];
console.log(copy); // [1,2]
console.log(copy === origin); //false
๐พ #1
const obj = { x:1, y:2 };
const copy = { ...obj };
console.log( obj === copy ); // false
// ๊ฐ์ฒด ๋ณํฉ
const merged = { x:1, y:2, ...{ a:3, b:4 } };
console.log(merged); // { x:1, y:2, a:3, b:4 }
๐พ #2
const merged = Object.assign({}, {x:1,y:2}, {y:10, z:3});
console.log(merged); // {x:1, y:10, z:3}
๐พ #3
// ๊ฐ์ฒด ๋ณํฉ
const merged = { ...{x:1,y:2}, ...{y:10, z:3} };
console.log(merged); // {x:1, y:10, z:3}
// ํน์ ํ๋กํผํฐ ๋ณ๊ฒฝ
const changed = { ...{x:1,y:2}, y:5 }; // == ...{y:5}
console.log(changed); // {x:1, y:5}
// ํ๋กํผํฐ ์ถ๊ฐ
const added = { ...{x:1,y:2}, z:5 }; // == ...{z:5}
console.log(added); // {x:1, y:2, z:5}
- ๋งค๊ฐ๋ณ์ ์ด๋ฆ ์์ ...์ ๋ถ์ฌ์ ์ ์ํ ๋งค๊ฐ๋ณ์๋ฅผ ์๋ฏธ
- ํจ์์ ์ ๋ฌ๋ ์ธ์๋ค์ ๋ชฉ๋ก์ ๋ฐฐ์ด๋ก ์ ๋ฌ๋ฐ์.
- ํ ๋น๋ ์ธ์๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ธ์๋ค์ ๋ฐฐ์ด๋ก ๋ฐํ, ๋ฐ๋์ ๋ง์ง๋ง ํ๋ผ๋ฏธํฐ์ ์์ฑํด์ผํจ.
- ๋จ ํ๋ฒ๋ง ์ ์ธํ ์ ์์.
- ํจ์ ์ ์ ์ ์ ์ธํ ๋งค๊ฐ๋ณ์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ํจ์ ๊ฐ์ฒด์ lengthํ๋กํผํฐ์ ์ํฅ์ ์ฃผ์ง ์์.
function foo(param1, pram2, ...rest) {
// ์ธ์๋ค์ ๋ชฉ๋ก์ ๋ฐฐ์ด๋ก ์ ๋ฌ๋ฐ์
console.log(...rest); // [ 3,4,5 ]
}
foo(1,2,3,4,5)
console.log(foo.length) // 2
- ES5์์๋ ๊ฐ๋ณ ์ธ์ ํจ์์ ๊ฒฝ์ฐ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ์ธ์๋ฅผ ์ ๋ฌ ๋ฐ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ฏ๋ก arguments ๊ฐ์ฒด๋ฅผ ํ์ฉํ์ฌ ์ธ์๋ฅผ ์ ๋ฌ ๋ฐ์.
function sum() {
console.log(arguments);
}
sum(1,2); // {length:2, '0':1, '1':2}
function sum() {
var array = Array.prototype.slice.call(arguments);
return array.reduce(function (pre, cur){
return pre + cur;
}, 0);
}
console.log(sum(1,2,3,4,5)) // 15
function sum(...args) {
return args.reduce((pre, cur) => pre + cur, 0);
}
console.log(sum(1,2,3,4,5)) // 15