코드스테이츠 SEB 14일차 TIL - JS Spread/Rest 문법, JS Koans
오늘은 오전에 자바스크립트의 Spread/Rest 문법을 학습하고 JS Koans 라는 스프린트에 들어갔다. Koans가 뭔지 몰라서 인터넷에 미리 뒤져보고 했었는데 관련해서 재매있는 내용들은 아래에 달아두었다.
Spread 문법
주로 배열을 풀어서 인자로 전달.
배열을 풀어서 각각의 요소로 넣을 때 사용된다.
function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
sum(...numbers) // 6
spread 문법은 기존 배열을 변경하지 않는다. immutable
따라서 기존 변수의 값을 바꾸려면 새롭게 할당해야 함
Rest 문법
매개변수를 배열의 형태로 받아서 사용 가능
파라미터 갯수가 가변적일 때 유용 (계속 변동될 가능성이 높은 경우)
function sum(...theArgs) {
return theArgs.reduce((previous, current) => {
return previous + current;
});
}
sum(1,2,3) // 질문: 어떤 값을 리턴하나요?
sum(1,2,3,4) // 질문: 어떤 값을 리턴하나요?
Spread syntax(...) 관련
위에서 다룬 Spread문법과 Rest문법의 경우에는 부트캠프 커리큘럼 내용 중에서 다뤄지는데 이 외에 저기서 배열의 요소 하나 하나를 풀어준다는 의미를 가지는 ...에 관해서 검색해봤는데 저것에 관해서 mdn에서는 Spread syntax라고 표기하길래 거기에 맞게 우선 표현하고자 한다. 어떤 블로그들은 Spread Operator으로 다루기도 하였다. 이름이야 어찌되었든 간에 저 Syntax가 사용되는 경우의 수는 크게 2가지로 확인이 가능했다.
1. 전환인자
함수의 전환인자로 쓰이는 경우
2. 배열 내 요소로 사용
이 경우는 배열을 합치는 예제로도 많이 쓰이는 부분이긴 한데 객체에 배열을 넣거나 하는 경우에도 쓰일 수 있을 듯 하다. 그리고 이 경우에는 사용되는 ...arr이 배열 안에 위치하는지도 확인해야할 필요성이 있다.
let obj = {
a : 1,
b : 3,
}
let arr = [1, 2, 3, 4];
obj.c = ...arr // Uncaught SyntaxError: Unexpected token '...'
위 코드에서의 obj.c = ...arr
부분과 같이 배열 안에 위치하지 않으면 에러가 발생된다. 위 코드를 수정하려면 obj.c = [...arr]
으로 입력해주어야 한다.
JS Koans
Koans 라는 영단어를 처음 들어보아서 찾아보았는데 이 의미가 선승들이 주고 받는 선문답이라고 한다. 약간 이해가 안될 수 있는데 그래서 인터넷을 더 뒤적거리다보니 누군가 깃허브에 JS Koans라는 레포지터리를 업로드 해놨었다. 그리고 READ ME를 읽어보니 다른 언어인 Ruby에 Ruby Koans라는 것이 있고 거기에 모티브를 얻어서 자바스크립트를 더 잘 이해할 수 있게 문제 형식으로 코드를 짜둔 것이다. 이 문제들을 채점하는 것은 mocha 를 사용한 것 같은데 정리하자면 Koans는 프로그래밍에서 각 언어를 더 잘 이해할 수 있도록 문제 형태로 짜둔 코드이다. 이를 풀면서 좀 더 그 불교에서 깨달음을 얻는 것 같은 컨셉으로 목표를 설정하는 듯하다. 일단 깃허브에 그가 올린 내용을 받아서 tester를 돌려봤는데 아래 이미지와 같았다
일단 첫줄부터 아직 깨달음(enlightenment)에 도달하지 않았다... 그리고 아래에 karma라는 용어까지 나오는 것을 보면 상당히 진심인 듯 해 보인다. 물론 부트캠프 koans에서는 저 문제를 풀지 않았다.
부트캠프에서 따로 준비해준 koans 문제들을 받아서 문제를 해결하였는데 대상되는 범위는 JS와 관련하여 여태까지 학습한 범위 전반이 포함되는 내용이었다. 그 문제들을 풀면서 기존에 배웠던 내용들을 복습하는 기분으로 풀었는데 생각보다 원만하게 풀 수 있었다. 다 기존에 철저한 복습을 해서 덕택이 아닌가 생각해본다. 기존에는 약간 애매했던 경우도 koans에서 등장하여 개념을 잡는데 더 도움을 받을 수 있었던 것 같다. 이 koans를 진행하면서 얻었던 깨달음(?)은 오늘 한번에 정리하여 블로그에 올리기에는 조금 무리가 있어 이건 다음에 기회가 된다면 정리해서 블로그에 포스팅을 해보도록 하겠다.
오늘 Koans 스프린트도 페어로 진행되었는데 최근에는 하루 단위로 페어가 바뀌고 있어 뭔가 조금 아쉬움이 있다. 무언가 무의식적으로 이제 페어들은 하루만 인사하고 과제를 한번 같이 하고 작별하는 사이다 보니 좀 친분을 쌓아가기에 조금 거리낌이 생기는 기분인 것 같다. 그 몬가 굳이 서로 친분을 쌓기 위한 말을 뱉고 할 필요가 있나? 그런 생각도 든다. 그래서 페어를 시작하게 되면 서로 가벼운 인사만하고 바로 과제를 함께 진행하고 과제에 관련된 이야기만 하게 되는데 그 무언가 과제를 진행하면서도 부담스러운 분위기다. 이런 부분은 부트캠프를 진행하면서 조금 아쉽게 느껴진다. 이전번 페어와는 나잇대도 비슷해서 과제를 진행하는 것에 있어 잘 맞는 느낌이 있었는데 한번 그런 경험을 하고나니 이후에는 그 정도에 안 맞으면 아쉬운 느낌도 있는 듯 하다. 생각을 해보면 인간은 원래 한번 맛있는 음식을 먹으면 그 다음에는 평소에 먹던 음식도 약간 맛 없게 되어버린다. 나는 지금 약간 그런 상태가 아닐까 생각을 해본다.