JavaScript - spread operator


spread operator(펼치기 연산자. 전개 연산자)

var birds = ['eagle', 'pigeon']
var mammals = ['rabbit', 'cat']
var animals = birds.concat('whale').concat(mammals) //['eage','pigeon', 'whale', 'rabbit', 'cat']

const animals2 = [...birds, 'whale', ...mammals]  //이래도 같다. 쭉 펼치는 거..

배열의 각 인자를 펼친 효과

const values = [20, 10, 30]
console.log(...values) //20 10 30

console.log(Math.max(20,10,30,50,40))
console.log(Math.max.apply(null, values))
console.log(Math.max(...values))

앞 뒤로 다른 값들을 함께 사용 가능

const values = [3,4,5,6,7,8]
const sum = (...args) => args.reduce((p, c)=> p+c)

console.log(sum(1, 2, ...values, 9, 10))

getter : 나머지 / 받는 입장 setter : 펼치기 / 주는 입장

iterable한 데이터는 다 펼칠 수 있다.

배열처럼 인덱스가 있고 인덱스마다 값이 할당이 되어서 순회하면서 하나하나 찾아낼 수 있는 애들

const str = 'hello!'


//둘다 같은 애들이다.
const splitArr = str.split('')
const restArr = [...str]

const set = new Set();

set.add(1).add(3).add(5)
console.log(...set)

push, unshift, concat 대체할 수 있다.

let originalArr = [2,3]
const preArr = [-2, -1]
const sufArr = [6,7]

originalArr.unshift(1) // 원래배열에 추가. 이런게 비용이 더 든다. 맨 앞에 원소 추가.
originalArr.push(4) // 원래배열에 추가. 

originalArr = [0, ...originalArr, 5] //새로운 배열

얕은 복사만을 수행한다.

let originalArray = [{
  first : 'Hello, ',
  second: 'World!'
},
{
  first: 'Welcome',
  second: 'ES6!'
}]

let copiedArray = [...originalArray]

copiedArray[0].first = "Hi." //originalArray[0] 값도 바뀐다.

tc39 : 에크마 스크립트를 재정하는 위원회. javascript에 대한 표준 규약 정의하는 집단.

es3 : 199x es5 : 2009 es6 : 2015. tc39 //많은 변화 es2016 : 2016 es2017

전세계 사람들한테 ‘이 기능 추가해주세요’ 라는

stage 0: 제안을 받아 stage 1 : 검토 stage 2 : 구체화 stage 3 : 도입 예정 stage 4: 도입 확정

이거를 proposal이라 한다.