-배운점
2주차 알고리즘을 진행하며 자바스크립트로 다양한 문제를 푸는 로직에 집중하는 방법을 배웠습니다. 처음에는 사전에 공부한 반복문,조건문을 위주로 문제를 풀었다면 대략 17~18번 문제 이후에는 다양한 함수를 사용하기위해 노력했습니다. 특히 이 과정에서 map, filter, reduce 등 사용 빈도가 높은 함수를 문제에 적용하는 방법을 깨달을 수 있었고 다른것보다 문제를 풀기 위해 직접 손으로 해결 우선순위를 정해보며 어떤 식으로 문제를 해결해야할지 감을 잡는데 큰 도움이 되었습니다.
Es는 ECMA Script의 약자로 JAVA script가 하나의 언어라면 Es는 자바스크립트 언어에 대한 표준 규격이다.
Es가 등장하게 된 배경은 다음과 같다. 1996년 미국 넷스케이프는 자바스크립트를 개발하고 공개했다. 이에 마이크로소포트사는 익스플로러용 언어인 JScript를 발표하였지만 이 두개의 호환성이 떨어지자 ECMA International의 JVAS script의 표준화가 시작었으며 이렇게 완성된 ECMA Script는 스크립트 언어가 준수해야 하는 규칙, 세부 사항 및 지침을 제공한다.
Es5와 Es6의 대표저인 차이점은 다음과 같다
var만 존재하는 Es5와 달리 Es6에서는 let과 const가 추가되었다. var는 변수를 지정할 때 사용되는 키워드지만 재할당과 재선언에 굉장히 자유롭고 함수스코프에서만 제약이 있어 for나 if문 등 블록스코프에서는 외부참조가 가능하다는 등의 문제가 있다.
반면 Es6에 추가된 let은 한번 선언된 변수에 동일한 이름으로 선언하는건 안되지만 값은 재할당이 되고 블록스코프로 적용이 되어 var의 단점을 상쇄시켰다.
const는 엄밀히 말하자면 변수보다는 상수로서, 한번 초기화된 변수에 재할당/재선언할 수 없다. const역시 블록, 함수스코프 안에서 선언되면 외부에서 내부참조가 불가능하다.
3.템플릿 리터럴
Es6에서 새롭게 등장한 템플릿 리터럴로 문자열 표현이 훨씬 간단해졌다. 템플릿 리터럴은 문자열을 백틱으로 감싸서 표헌하는 기능이다. 템플릿 리터럴과 함께 플레이스 홀더**(${variable})을 사용하여 백틱 내부에 문자열과 함께 표현식을 넣을 수 있다.
4.this
Es6에서 this는 자신을 감싸는 this를 바라보기 때문에 따로 바인딩이나 변수에 담을 필요가 없다.
5.모듈
Es6부터는 import/export로 모듈을 관리할 수 있게 되었다. 모듈은 실현가능한 특정 프로그램의 그룹이고 이것은 다른 파일의 변수나 함수를 참조한다. 클래스와 같은 모듈이 로딩될 때, import와 export를 이용할 수 있다.
6.클래스
Es6에서는 class 키워드를 사용하여 선언할 수 있게 되었으며 클래스 상속은 super를 사용하여 수행할 수 있다.
사전에 배우고 온 것을 사용할 수 있어서 좋았다. 처음에는 반복문과 조건문만으로 문제를 해결했는데 문풀과 구글링을 진행할수록 다양한 함수가 나와서 조금 당황했다. 그때 나의 문제풀이 과정이나 방식이 과정 옳은가? 효율적인가? 라는 의문이 들었고 기술매니저님들과의 멘토링 시간이나 줌을 통한 문풀 시간등에 해당 부분에 대해 물어봤다.
여러 함수를 사용한 짧고 간단한 수식을 사용하는것과 어떻게든 알고리즘 문제를 풀어내는 것 둘 중에 무엇이 더 중요한지를 물어봤는데 멘토님들 모두 어떻게든 알고리즘 문제를 풀어내는 자세도 중요하지만 회사에 따라서는 적당한 함수를 사용한 짧고 간단한 수식의 사용도 중요하다는 말을 들었다. 이후 10번 후반대부터는 문제의 키워드를 위주로 검색해서 함수를 사용한 풀이에 집중했다. 이 과정에서 map, filter 등의 함수를 좀 파고 들었는데 3주차 입문 기초 자료에 해당 함수들이 있어서 좀 놀랍기도 하고 뿌듯하기도 했다.