μ€νλ λ λ¬Έλ²
- es6μμ λμ
λ μ€νλ λ λ¬Έλ² (
spread syntax
)μ νλλ‘ λμ³ μλ μ¬λ¬ κ°λ€μ μ§ν©μ νΌμ³μ κ°λ³μ μΈ κ°λ€μ λͺ©λ‘μΌλ‘ λ§λ λ€. - μ€νλ λ λ¬Έλ² μ¬μ©μ λμμ
for ... of
λ¬ΈμΌλ‘ μνν μ μλ μ΄ν°λ¬λΈμ νμ λλ€.
console.log(...[1,2,3]); // 1 2 3
// μ΄ν°λ¬λΈμ΄ μλ μΌλ° κ°μ²΄λ μ€νλ λ λ¬Έλ²μ λμμ΄ λ μ μλ€.
console.log(...{a : 1, b : 2}); // TypeError : Found non-callable @@iterator
- μ€νλ λ λ¬Έλ²μ κ²°κ³Όλ κ°μ΄ μλλλ€. (μ¦, ... λ¬Έλ²μ μλ‘μ΄ κ°μ μμ±νλ μ°μ°μκ° μλλλ€.)
- λ°λΌμ μ€νλ λ λ¬Έλ²μ κ²°κ³Όλ λ³μμ ν λΉν μμλ€.
μ 리 : μ€νλ λ λ¬Έλ²μ κ²°κ³Όλ¬Όμ κ°μΌλ‘ μ¬μ©ν μ μκ³ , μΌνλ‘ κ΅¬λΆν κ°μ λͺ©λ‘μ μ¬μ©ν©λλ€.
- μ€νλ λ λ¬Έλ² μ¬μ© λμ
- ν¨μ νΈμΆλ¬Έμ μΈμ λͺ©λ‘
- λ°°μ΄ λ¦¬ν°λ΄μ μμ λͺ©λ‘
- κ°μ²΄ 리ν°λ΄μ νλ‘νΌν° λͺ©λ‘
ν¨μ νΈμΆλ¬Έμ μΈμ λͺ©λ‘
- λ°°μ΄μ μλ λͺ©λ‘μ spread syntaxλ‘ μ κ°ν΄μ ν¨μ νΈμΆμ μΈμλ‘ μ λ¬ ν μ μλ€.
const arr = [1,2,3];
// Math.max(1,2,3); κ³Ό κ°μ
const max = Math.max(...arr); // 3
- Rest νλΌλ―Έν°μ ννκ° λΉμ·νμ¬ νΌλμ μ£Όμν΄μΌ ν©λλ€.
Rest νλΌλ―Έν°λ μ€νλ λ λ¬Έλ²κ³Ό λ°λμ κ°λ
Rest νλΌλ―Έν°λ μΈμλ€μ λͺ©λ‘μ λ°°μ΄λ‘ μ λ¬ λ°λ κ²
λ°°μ΄ λ¦¬ν°λ΄ λ΄λΆμμ μ¬μ©νλ κ²½μ°
- μ€νλ λ λ¬Έλ²μ μ¬μ©νλ©΄ es5μμ μ¬μ©νλ κΈ°μ‘΄μ λ°©μλ³΄λ€ κ°κ²°νκ² νν κ°λ₯ν©λλ€.
concat
- 2κ°μ λ°°μ΄μ 1κ°μ λ°°μ΄λ‘ κ²°ν©νκ³ μΆμ κ²½μ°
concat
λ©μλλ₯Ό μ¬μ©ν©λλ€.
// 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]
splice
- λ°°μ΄μ μ€κ°μ λ€λ₯Έ λ°°μ΄μ μμλ€μ μΆκ°νκ±°λ μ κ±°νλ €λ©΄
splice
λ©μλλ₯Ό μ¬μ©νλ€. - μ΄λ,
splice
λ©μλμ μΈ λ²μ§Έ μΈμλ‘ λ°°μ΄μ μ λ¬νλ©΄λ°°μ΄ μμ²΄κ° μΆκ°λλ€.
//ES5
var arr1 = [1,4];
var arr2 = [2,3];
Array.prototype.splice.apply(arr1, [1,0].concat(arr2));
console.log(arr1); // [1,2,3,4]
// ES6
const arr1 = [1,4];
const arr2 = [2,3];
arr1.splice(1,0, ...arr2);
console.log(arr1); // [1,2,3,4]
λ°°μ΄ λ³΅μ¬
- es5μμ λ°°μ΄μ 볡μ¬νλ €λ©΄ slice λ©μλλ₯Ό μ¬μ©νλ€.
// 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
- μ΄λ μλ³Έ λ°°μ΄μ κ° μμλ₯Ό μμ 볡μ¬(
shallow copy
)νμ¬ λ³΅μ¬λ³Έμ μμ±νλ€.
μ΄ν°λΈμ λ°°μ΄λ‘ λ³ν
- es5μμ μ΄ν°λ¬λΈμ λ°°μ΄λ‘ λ³ννλ €λ©΄
Function.prototype.apply
λλFunction.prototype.call
λ©μλλ₯Ό μ¬μ©νμ¬slice
λ©μλλ₯Ό νΈμΆν΄μΌνλ€. - μ€νλ λ λ¬Έλ²μ μ¬μ©νλ©΄ κ°νΈνκ² μ΄ν°λ¬λΈμ λ°°μ΄λ‘ λ³νν μ μλ€.
function sum() {
return [...arguments].reduce((pre,cur) => pre+cur,0);
}
console.log(sum(1,2,3));
- λ¨, μ΄ν°λ¬λΈμ΄ μλ μ μ¬ λ°°μ΄ κ°μ²΄λ μ€νλ λ λ¬Έλ²μ λμμ΄ λ μ μμ΅λλ€.
κ°μ²΄ 리ν°λ΄ λ΄λΆμμ μ¬μ©νλ κ²½μ°
- μ€νλ λ λ¬Έλ²μ λμμ μ΄ν°λ¬λΈμ΄μ΄μΌ νμ§λ§ μ΅μ μλ°μ€ν¬λ¦½νΈμμ μΌλ° κ°μ²΄λ₯Ό λμμΌλ‘λ μ€νλ λ λ¬Έλ²μ μ¬μ©μ νμ©νλ€.
// μ€νλ λ νλ‘νΌν°
// κ°μ²΄ 볡μ¬(μμ 볡μ¬)
const obj = { x: 1, y: 2 };
const copy = { ...obj };
console.log(copy); // { x: 1, y: 2 }
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 }
- es6μ΄μ μλ
Object.assign
λ©μλλ₯Ό μ¬μ©νμ¬ μ¬λ¬κ°μ κ°μ²΄λ₯Ό λ³ν©νκ±°λ νΉμ νλ‘νΌν°λ₯Ό λ³κ²½ λλ μΆκ°νλ€.
(μ€νλ λ νλ‘νΌν°λ Object.assign λ¬Έλ²μ κ°νΈνκ² λ체ν μ μμ΅λλ€.)
// κ°μ²΄ λ³ν©, νΉμ νλ‘νΌν°κ° μ€λ³΅λλ κ²½μ° λ€μ μμΉν νλ‘νΌν°κ° μ°μ κΆμ κ°λλ€.
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 : 100};
console.log(changed); // { x : 1, y : 100}
// νλ‘νΌν° μΆκ°
const added = {...{x : 1, y : 2}, z : 0};
console.log(added); // { x : 1, y : 2, z : 0}
'javascript > π study' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[7μ£Όμ°¨ μ€ν°λ]37μ₯-Set κ³Ό Map (0) | 2022.03.27 |
---|---|
[7μ£Όμ°¨ μ€ν°λ]35μ₯-λμ€νΈλμ²λ§ ν λΉ (0) | 2022.03.27 |
[7μ£Όμ°¨ μ€ν°λ]34μ₯-μ΄ν°λ¬λΈ (0) | 2022.03.27 |
[7μ£Όμ°¨ μ€ν°λ]33μ₯-Symbol (0) | 2022.03.27 |
[5μ£Όμ°¨ μ€ν°λ]26μ₯-ES6 ν¨μ μΆκ° κΈ°λ₯ (0) | 2022.03.27 |
λκΈ