teslaModel3
를 나타내는 문자열을 만들어보자.
템플릿 리터럴을 사용하기 이전에는 이런식으로 문자열을 만들었다. 띄어쓰기와 변수 사이에 항상 +
를 신경써야 했다.
$
과 backtick
키(숫자 1 키 왼쪽에 있는 키)를 이용하면 문장을 쓰듯이 문자열을 만들 수 있다. 위의 코드에 비해 읽기도 쓰고 유지, 보수하기도 편하다.
텀플릿 리터럴은 함수의 매개변수로도 사용할 수 있다. ()
대신 backtick
키를 사용해 매개변수를 전달하고 문자열과 변수로 구분해서 받을 수 있다. 위의 함수에서는 str
로 문자열을 받고 price
로 teslaModel3.price
를 받아 사용했다.
자동차를 나타내는 객체를 만들었다. driving
이라는 함수를 만들어 자동차의 이름은 무엇이고 몇 초만에 최고 속도 몇까지 올라가지는 나타내도록 해보자.
car
객체를 매개변수로 받아서 diving1
함수에서 name, zeroBack, maximumSpeed
를 활용하고 있다. 이 방식은 그렇게 나쁜 방식은 아니지만 car.
부분이 계속해서 반복되고 있다.
비구조화 할당은 이용하면 반복되는 car.
부분을 없앨 수 있다.
매개변수 단계에서 비구조화 할당을 하는 방법과 함수 안에 비구조화 할당을 하는 방법이 있다. 두 가지 방법은 사용하는 객체의 크기나 함수의 상황에 따라 선택해서 사용하면 된다.
엘런 머스크 객체 안에 엘런 머스크의 회사 가치를 더 해보자.
두 객체를 병합할 때 첫번째 방식과 같이 하나씩 속성을 만들어 삽입하는 방식이 있다. 이 방식은 객체의 속성이 많아질수록 작성하기 힘들어진다. 그래서 두번째에서는 Object.assign
을 이용했다. 만약 엘런 머스크의 회사 가치를 연도별로 정리한다면 위에 첫번째 방식으로 코드를 작성하기 힘들 것이다. 두번째 방식으로는 쉽게 작성할 수 있다.
Object.assign
방식은 그렇게 나쁜 방식은 아니지만 spread 연산자
를 사용하면 위에처럼 더 간단하게 코드를 작성할 수 있다.
spread 연산자
는 배열에서도 마찬가지로 사용 가능하다.
FAANG
에 빠진 나머지 기업들을 배열에 추가해보자.
이렇게 배열 요소 하나하나를 push
로 밀어넣는 방식은 배열 요소가 많아진다면 유지,보수하기 힘들어진다.
spread 연산자
를 사용하면 코드는 더 간결해지고 배열 조작은 더 쉬워진다. 맨 앞과 맨 뒤 뿐만 아니라 어느 위치로도 기존 배열의 위치를 조정할 수 있다.
장바구니에 담긴 종목들의 총합과 수수료를 포함한 가격이 나타내는 배열 그리고 1500 달러보다 비싼 종목들의 배열을 만들어보자.
위의 코드는 for문
을 돌면서 총합을 나타내는 total
과 수수료를 더한 가격인 withFree
그리고 높은 가격의 종목를 따로 구분한 highPrice
의 값을 구분했다. 이 코드는 문제는 없지만 코드를 보면서 바로 이해하기 힘들며 예측하기 어렵다.
이 코드는 total
, withFee
, highPrice
가 명확히 구분되어 있고 한 줄로 체이닝되어 있어서 빠르게 이해할 수 있다. 자바스크립트에선 보통 이렇게 함수형으로 작성을 많이 한다.
랜덤으로 숫자를 만들어주는 promise
객체를 리턴하는 함수를 만들었다. 세 숫자를 랜덤하게 만든 후에 그 세 숫자의 합을 console.log
로 찍어주는 함수를 만들어보자.
promise
와 then
을 이용해서 숫자 세 개를 받아 합을 나타내는 함수를 만들었다. 이 코드는 then
,then
,then
,then
... 숫자가 많아질수록 읽기 힘든 코드가 될 것이다.
async/await
를 사용하면 동기로 된 코드처럼 한줄 한줄 순서대로 작성된 코드를 작성할 수 있다. 가독성도 좋고 더 이상 then
,then
으로 꼬리를 물면서 코드를 작성할 필요가 없다.
오~ 제가 작성한 모던 자바스크립트 스타일과 추구하는 방향이 비슷하네요. 반갑습니다 ㅎㅎ 혹시 구경 오실 분들은 아래 깃헙에 방문해주세요.
https://github.com/dangen-effy/modern-javascript
for loop와 map/filter 방식을 비교한 부분은 조금 의아합니다. 후자는 js 스러운 방식이라기 보다는 reactive programming 내지는 functional programming에 엮여야 더 자연스러울 것 같습니다. 이 대목은 기존 for loop와 for...in & for...of 를 비교하는 것이 적절치 않을까 싶습니다.
항상 알면서도 자꾸 잊어먹어서 옛날 방식으로 사용하는 것들을 잘 정리해주셨네요. ㅋㅋ 다시 리마인드하고 갑니다~ 배운건 계속 써먹어야하는데 ㅜㅜ