오늘은 JS강의를 통해 일급객체의 의미와 저녁 특강으로 알고리즘에 대해 학습하였다.
1. 각종 es6 문법
ECMAScript6(ES6)는 JavaScript의 버전 중 하나로, 2015년 발표되었다.
ES6는 이전 버전인 ES5에서 새로운 문법과 기능을 도입하여
JavaScript 개발자들이 보다 쉽고 효율적으로 코드를 작성할 수 있도록 개선되었다.
→ 2015년도 대규모 문법적 향상 및 변경이 발생하여 ES6는 항상 언급된다고 한다.
- let, const
- 화살표 함수 (Arrow Fuction)
- 삼항 연산자 (ternary operator)
- 구조 분해 할당 (Destructuring)
- 배열(Array)의 경우 순서가 중요하다.
-
- 객체(Object)의 경우 key가 중요하다.
-
- 새로운 이름으로 할당하는 방법
- 단축 속성명 (property shorthand)
- key와 value 값이 같을 경우 생략할 수 있다.
- 전개 구문 (Sperad)
- 구조 분해 할당(Destructuring)과 함께 가장 많이 사용되는 es6 문법 중 하나 ★
- 나머지 매개변수 (rest parameter)
- 아래와 같이 사용할 수 있다.
- 예시는 console에 1부터 7까지 출력된다.
- 템플릿 리터럴 (Template Literal)
- 백틱(억음부호) `를 사용하여 원하는 부분을 묶는다.
2. 일급객체(First - Class - Object)
일급객체란 다른 객체들이 일반적으로 적용 가능한 연산을 모두 지원하는 객체라는 의미이다. JS에서는 함수가 일급 객체로 취급되기 때문에 함수를 매우 유연하게 사용할 수 있다. 그렇기에 매우매우 중요한 개념이라고 한다. 아래는 함수가 일급 객체로 취급되는 5가지의 경우이다.
- 변수에 함수를 할당할 수 있다.
- 함수가 나중에 사용될 수 있도록 조치되었다. → 함수가 마치 값으로 취급된다.
- 함수를 인자로 다른 함수에 전달할 수 있다.
- 콜백함수(call-back) : 매개변수로써 쓰이는 함수
- 고차함수(Higher-Order Function) : 함수를 인자로 받거나 return하는 함수\
- 함수를 반환할 수 있다.
- 객체의 프로퍼티(property)로 함수를 할당할 수 있다.
- 배열의 요소로 함수를 할당할 수 있다.
3. Map과 Set
JS에서 객체와 배열을 이용하면 굉장히 다양하고 복잡한 프로그래밍을 할 수 있다.
그럼에도 불구하고 여전히 현실세계의 여러가지 문제들을 "프로그래밍적"으로 온전히 반영(표현)하기엔 많은 부분이 부족하다. Map과 Set은 이러한 한계를 극복하고자 비교적 최근에 등장한 자료구조라고 할 수 있다. 두 자료 구조는 data의 구성, 검색 및 사용을 객체나 배열보다 효율적으로 처리할 수 있다.
1) Map ( Key / Value )
map은 키가 정렬된 순서로 저장되기 때문에 key에 모든 데이터타입(유형)이 들어갈 수 있다.
검색, 삭제. 제거, 여부 확인이 가능하다.
→ 검색 기능이 추가된 객체느낌?
- Map의 반복
- for ... of 반복문
for ... of 반복문은 ES6에 추가된 새로운 컬렉션 전용 반복 구문이다.
사용하기 위해선 컬렉션 객체가 [Symbol.iterator] 속성을 가지고 있어야만 한다.
이는 직접 명시가 가능하다.
# iterator란?
반복자라는 의미로 요소 하나하나를 반복할 수 있도록 배열 또는 객체와 비슷한 형태로 열거되어있는 자료구조
- Map의 크기 및 존재 여부 확인
size 속성(property)와 has method를 사용하여 Map의 크기와 존재 여부를 확인할 수 있다.
4. 숙제
5. 알고리즘(Algorithm)
컴퓨터가 문제를 해결할 수있도록 절차나 방법을 자세하게 설명하는 과정
컴퓨터는 작업 성능이 우수하나 정확한 명령이 없으면 일을 효율적으로 해결하기 어렵다.
따라서 개발자는 컴퓨터가 효율저긍로 동작할 수 있도록 명령을 내려야하고 이 때 알고리즘이 필요하다.
1) 코딩테스트
- 코드로 이루어지는 모든 형태의 테스트
- 통상적으로 알고리즘 실력을 평가
2) 알고리즘을 배우는 이유
- 취업
- 좋은 코드 작성에 큰 도움이 됨
- JS학습에 도움이 됨
3) 예제풀이 (가위/바위/보)
가장 먼저 떠오른 생각은 변수 a와 b의 값이 같으면 비긴다였다.
이후 6가지의 승패 경우의 수를 생각해보았는데,
3가지의 승리 경우의 수의 반대는 패의 경우의 수라는 것을 생각했다.
이런 생각을 정리한 이후 작성한 코드는 아래와 같다.
★ 07일차 소감
오늘은 컴퓨터가 말썽이었다. 자는 동안 윈도우 업데이트가 된 것 같은데 이후 너무 버벅거린다.
때문에 강의를 듣다가도 멈추고.. 강의를 원하는 진도까지 듣지 못하여 아쉬움이 남는다.
Map과 Set에 대해서는 조금 더 깊이 공부해 볼 필요가 있을 것 같다.
이후 저녁 시간 특강을 통해 알고리즘에 대해 배울 수 있었다.
특강 중 제시된 예제를 나름 뿌듯하게 해결하고 결과를 보고 있었는데 삼항 연산자를 이용하여
표현하니 같은 말이여도 조금 더 간단한 코드를 작성할 수 있다는 것을 알았다.
앞으로 알고리즘 문제는 매일 아침마다 머리를 깨울 겸 꾸준히 풀어볼 예정이다.
캠프가 본격적으로 진행되면서 하루하루가 계속, 꾸준히 바빠질 것 같다 ㅋㅋ
'TIL' 카테고리의 다른 글
10. 14. 09일차 TIL - 코딩컨벤션, 알고리즘-복잡도 (1) | 2024.10.14 |
---|---|
10. 11. 08일차 TIL - 데이터 타입(심화) (5) | 2024.10.11 |
10. 08. 06일차 TIL - JavaScript 역사, 특징, 기본문법 (7) | 2024.10.08 |
10. 07. 05일차 TIL - 팀프로젝트_03 마무리 및 회고 (3) | 2024.10.07 |
10. 04. 04일차 TIL - 팀프로젝트_02 중간과정 (0) | 2024.10.04 |