ν°μ€ν 리 λ·°
μ΄λ²μ λ€λ£° λ΄μ©μ default + rest + spread μ λλ€. λ΄μ©μ ν¬κ² μ΄λ ΅μ§ μμ΅λλ€. μ μ΄λ defaultλ νλ‘κ·Έλλ°μ νλ€λ³΄λ©΄ λ§μ΄ λ£λ λ§ μ€μ νλμ£ . Restμ Spread λν κΈ°μ‘΄μ ES5μμ μ¬μ©νλ λ°©λ²μ μ’ λ κ°κ²°νκ³ κ°νΈνκ² μμ±νκΈ° μν μλ‘μ΄ μ°μ°μλ₯Ό μ 곡ν΄μ£Όλ κ°λ μ λλ€.
β default
: κΈ°λ³Έ κ°μ΄λΌλ λ»μ΄μ£ . μλ°μ€ν¬λ¦½νΈμμλ κΈ°λ³Έ κ°μ΄ μλ€λ©΄ undefined λΌλ κ°μ κ°κ³ μμ΅λλ€. λ§ κ·Έλλ‘ κ°μ΄ μλ€λ λ»μ΄μ£ . νμ§λ§ λμ λ°λΌμ κ°μ μ λ ₯μ΄ μμ΄λ κΈ°λ³Έ κ°μ μ ν΄μ€μΌ νλ κ²½μ°κ° μμ κ²λλ€.
1 2 3 4 5 6 7 | //ES5 function inc(number, increment) { increment = increment || 1; return number + increment; } console.log(inc(2, 2)); // 4 console.log(inc(2)); // 3 | cs |
1 2 3 4 5 6 | //ES6 function inc(number, increment=1) { return number + increment; } console.log(inc(2, 2)); // 4 console.log(inc(2)); // 3 | cs |
=> ν¨μκ° μ’ λ κ°κ²°ν΄μ‘μ£ ? ν¨μ μμ± λΆλΆμμ increment=1 μ΄λΌκ³ default κ°μ μμ±νμ¬ κ°μ΄ μλ€μ΄μμ μμ λ°λ‘ κ°μ μ€μ ν΄μ€μΌ νλ νμκ° μμ΄μ‘μ΅λλ€.
β rest
: μμ΄ κ·Έλλ‘ ν΄μνμλ©΄ λλ¨Έμ§ λΌκ³ ν΄μλ μ μκ² λ€μ. μ¬κΈ°μ "..." μ΄λΌλ μλ‘μ΄ μ°μ°μκ° λ±μ₯ν©λλ€. μΌλ°μ μΌλ‘ λ€μ λ΄μ©μ΄ κ³μ λλλ° μλ΅λμ΄μ§ λ ... μ΄λΌλ λ§μ μ°κ³€νμ£ . λ§μ½ ν¨μμ λ€μ΄κ°λ 맀κ°λ³μμ κ°μκ° μ ν΄μ§μ§ μμλ€λ©΄ 맀κ°λ³μμ κ°μλ§νΌ μ μ²λ¦¬ ν΄μΌνλ ꡬ문μ μ¨μΌν κ²μ λλ€.
1 2 3 4 5 6 7 8 9 | //ES5 function sort(){ var numbers = Array.prototype.slice.call(arguments) .sort(function(a,b){return a-b;}); return numbers; } console.log(sort(10,2,6,4)); //[ 2, 4, 6, 10 ] console.log(sort(9,8,7,100,20,15,17)); //[ 7, 8, 9, 15, 17, 20, 100 ] | cs |
=> μ€λ¦μ°¨μ μ λ ¬μ νλ ν¨μμΈλ°, 맀κ°λ³μκ° λ°°μ΄λ‘ λ€μ΄κ°λ κ²μ΄ μλλΌ μ΄λ κ² κ°μκ° μ ν΄μ§μ§ μλ μ½€λ§ννλ‘ λ€μ΄κ°λ€κ³ κ°μ νκ² μ΅λλ€. κ·ΈλΌ sortν¨μλ₯Ό μ°κΈ° μν΄μλ ν¨μ νΈμΆ μμ argumentsλ₯Ό λ°°μ΄νμμΌμ μ¬μ©ν΄μΌ ν©λλ€. λͺκ°μ 맀κ°λ³μκ° λ€μ΄μ¬μ§λ₯Ό λͺ¨λ₯΄λ sortν¨μμ 맀κ°λ³μλ₯Ό μ μν μκ° μμ£ .
1 2 3 4 5 6 7 | //ES6 function sort(...numbers){ return numbers.sort(function(a,b){return a-b;}); } console.log(sort(10,2,6,4)); //[ 2, 4, 6, 10 ] console.log(sort(9,8,7,100,20,15,17)); //[ 7, 8, 9, 15, 17, 20, 100 ] | cs |
=> sort ν¨μλ₯Ό μ μν λ argumentsλ₯Ό ...numbers λΌκ³ μ μνμμ΅λλ€. κ°μκ° μ μλμ§ μμ 맀κ°λ³μμ΄κΈ° λλ¬Έμ μ€λ₯κ° λμ§ μκ³ Arrayλ‘ λ³νν νμλ μμ΅λλ€. λ°λΌμ μ λ ¬ μμ
μ νκΈ° μν΄μλ κ·Έλ₯ sortν¨μλ§ μ¬μ©νλ©΄ κ°κ²°ν μ½λμμ±μ΄ κ°λ₯ν΄μ§λλ€. μ°Έκ³ λ‘ ... μ°μ°μλ λ± ν λ²λ§ μ¬μ© κ°λ₯ν©λλ€. μ¬λ¬κ°μ ... μ°μ°μλ₯Ό κ°μ§ ν¨μλ μ μ λΆκ°λ₯ν©λλ€. λν 맀κ°λ³μκ° μ¬λ¬κ°μΌ λ 맨 λ§μ§λ§μ ... μ°μ°μλ 맨 λ§μ§λ§μ μμΉν΄μΌν©λλ€.
β»μ°Έκ³ μ¬ν
: argumentsλ μ μ¬λ°°μ΄κ°μ²΄μ΄κ³ , rest parameterλ λ°°μ΄μ λλ€. μ μ¬λ°°μ΄κ°μ²΄λ λ°°μ΄μ²λΌ μ¬μ©μ λκΈ΄ νμ§λ§ Array μ€λΈμ νΈμ λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€. ES6μ νμ΄νν¨μμμλ arguments κ°μ²΄λ₯Ό λ°μΈλ©νμ§ μμΌλ―λ‘ rest parameter μ¬μ©μ κΆμ₯ν©λλ€.
β spread
: μ κ° μ°μ°μλ λ°°μ΄μ΄λ κ°μ²΄λ₯Ό νμ₯νμ§λ§, λ°λ©΄μ λλ¨Έμ§ κ΅¬λ¬Έμ 2κ° μ΄μμ μμμ νλμ μμλ‘ λͺ¨μλλ€. νμ₯λλ€λ λ§μ μ΄μ μ λ§μΆμ΄μ λͺκ°μ μ½λλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
1. λ°°μ΄ λ³΅μ¬νκΈ°
1 2 3 4 5 | // ES5 var arr1 = [1,2,3]; var arr2 = arr1.slice(); console.log(arr2); // [1,2,3] | cs |
=> λ°°μ΄ κ°μ²΄μ slice λ΄μ₯ν¨μλ₯Ό μ΄μ©νμ¬ arr2μ arr1μ λ΄μ©μ 볡μ¬ν μ μμ΅λλ€.
1 2 3 4 5 | // ES6 var arr1 = [1,2,3]; var arr2 = [...arr1]; console.log(arr2); // [1,2,3] | cs |
=> λ΄μ₯ν¨μμ μ¬μ© μμ΄ μ κ° μ°μ°μλ₯Ό μ¬μ©νμ¬ λ°°μ΄μ κ·Έλλ‘ λ³΅μ¬ν μ μμ΅λλ€.
2. λ°°μ΄ push
1 2 3 4 5 6 | //ES5 var arr1 = [0, 1, 2]; var arr2 = [3, 4, 5]; // arr1μ arr2μ λͺ¨λ νλͺ©μ λ§λΆμ Array.prototype.push.apply(arr1, arr2); console.log(arr1); //[0,1,2,3,4,5] | cs |
=> apply()
λ©μλλ μ£Όμ΄μ§ this
κ°κ³Ό arguments
λ‘ ν¨μλ₯Ό νΈμΆν©λλ€. arguments
μλ λ°°μ΄(λλ μ μ¬λ°°μ΄κ°μ²΄ array-like object)κ° μ¬ μ μμ΅λλ€.
1 2 3 4 5 6 | //ES6 var arr1 = [0, 1, 2]; var arr2 = [3, 4, 5]; // arr1μ arr2μ λͺ¨λ νλͺ©μ λ§λΆμ arr1.push(...arr2); console.log(arr1); //[0,1,2,3,4,5] | cs |
=> push λ©μλλ₯Ό μ¬μ©ν λ spread μ°μ°μλ₯Ό 맀κ°λ³μλ‘ μ¬μ©νμ¬ νμ₯λ λ°°μ΄μ λ§λ€ μ μμ΅λλ€. ES6 λ¬Έλ²μμλ rest parameterλ₯Ό κΆμ₯νλ―λ‘ ES6λ‘ μμ±νλ μ½λμμλ μμ κ°μ λ°©λ²μ΄ μ³λ€κ³ ν μ μκ² λ€μ.
(λ΄μ© μΆμ²
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Spread_operator,
https://medium.com/ecmascript-2015/default-rest-spread-f3ab0d2e0a5e )
'javascript > λͺ¨λ μλ°μ€ν¬λ¦½νΈ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
8. iterators + for..of (0) | 2019.01.11 |
---|---|
7. let + const (0) | 2019.01.06 |
5. destructuring (0) | 2018.12.31 |
4. template strings (0) | 2018.12.24 |
javascriptλ‘ λλ§μκΈ° λ§λ€κΈ° (0) | 2018.12.24 |
- Total
- Today
- Yesterday
- nestjs directory
- nestjs doc
- DeferredResult
- backend-framework
- Promise bulk
- typeorm μ°κ²°
- nestjs/cli
- μκ³ λ¦¬μ¦
- Promise error
- sequelize
- node.js backend
- foreignkey
- νλ‘κ·Έλλ¨Έμ€
- JavaScript
- nestjs module
- κΈ°μμ²API
- Request_Limit_Exceeded
- android
- node.js
- nestjs typeorm
- nestjs configService
- Spring
- typeorm
- Spring Async
- docker mysql
- λΉλκΈ° μμ²
- nestjs config
- NestJS
- nestjs project
- @nestjs/config
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |