언어, 프레임워크/Javascript & Typescript
-
[Javascript] Set에 대한 얄팍한 정리언어, 프레임워크/Javascript & Typescript 2023. 5. 28. 01:33
틀린 내용이 있을 수 있습니다. 잘못된 부분을 발견하시면 말씀 부탁드립니다! 🙇 Javascript에서 Set을 이용해 코드를 작성한 적이 종종 있었고 코딩테스트 연습 문제들을 풀면서도 사용한 적이 있었다. 당시에도 사용하면서 왜 빠르지?를 궁금해하긴 했지만 이런저런 핑계 때문에 자세히 찾아보기를 미뤘다. 최근 알고리즘 문제를 풀다 Set을 이용해 속도 효율성 문제를 해결했고, 이 기회에 Javascript에서의 Set에 대해 정확히 이해하자 생각하여 정리해 본다. 1. Set의 정의와 특징 MDN에서 Set의 정의를 보면 'Set objects are collections of values.'라 나와있듯 Set은 여러 개 값들의 모음이다. 이 여러 개 값들의 모음인 Set에는 원시값(String, Nu..
-
[Javascript] test() 사용시 정규표현식에 g 플래그 포함할 경우언어, 프레임워크/Javascript & Typescript 2023. 3. 13. 15:36
틀린 내용이 있을 수 있습니다. 발견하시면 말씀 부탁드립니다! 🙇 정규표현식과 test() 메소드를 통해 문자열에 숫자가 포함되어있는지 체크하는 코드를 작성하다가, 글로벌(g) 플래그 여부에 따라 결과가 다른 것을 알게되었다. let checkNum = /[0-9]/; let checkNumGlobal = /[0-9]/g; mdn test method 문서를 확인해보니, 정규표현식에 g플래그를 붙이고 test() 메소드를 실행할 때 결과가 true일 때마다 정규표현식 객체의 lastIndex 프로퍼티를 업데이트한다고 되어있다. lastIndex는 다음 메소드 실행시 시작할 인덱스이다. 만약 test() 메소드 결과가 false이면 lastIndex가 0으로 업데이트 된다. 참고 자료 https://dev..
-
[Javascript] 병렬 처리와 함께 작업 순서가 유지되어야 하는 경우언어, 프레임워크/Javascript & Typescript 2022. 4. 6. 20:47
틀린 내용이 있을 수 있습니다. 발견하시면 말씀 부탁드립니다! 🙇 회사에서 운영 업무 자동화에 이용할 API를 개발했다. 해당 API에서는 서드파티 연동을 위해 외부 API 호출을 하면서 동시에 내부 DB 요청도 수행한다. 이러한 일련의 작업을 수행하는데 n초가 소요되며 유저 수(m)만큼 반복해야 하기 때문에 단순히 계산해도 n*m 초 이상이 걸린다. 속도 개선을 위해 병렬로 처리하려 하니 순서가 보장되지 않아 DB 요청에서 데이터가 꼬이는 이슈가 발생했다. (각 작업을 마치고 고유키와 로그를 저장하는 플로우를 위해 순서 유지는 필수이며, 속도 vs 순서 유지 중 하나만 선택해야 한다면 순서 유지를 골라야 하는 상황이다.) 개선 -작업 순서 유지와 함께 병렬 처리- 을 하기 위해, 자바스크립트의 비동기 ..
-
[Javascript] 함수형 프로그래밍 (+제너레이터/이터러블/이터레이터)언어, 프레임워크/Javascript & Typescript 2021. 10. 19. 14:37
인프런 강의를 통해 배운 내용과 궁금한 점에 대해 정리한 글입니다. 틀린 부분이 있다면 말씀 부탁드립니다! 함수형 프로그래밍이라는 단어를 듣기만 한 상태에서 강의를 보기 시작했다. 강의를 반 정도 본 지금, 평소에 내가 쓰던 코드가 함수형 프로그래밍 코드와 비교했을 때 얼마나 더러운(^^) 코드인지 알게 되었다. 아직 완강을 못 한 상태이기 때문에 이번 글에서는 함수형 프로그래밍에 대한 기본적인 정의와 사용 시 이점, 그리고 강의에서 언급된 제너레이터, 이터러블, 이터레이터에 대해 정리해보려 한다. 1. 함수형 프로그래밍은 선언적인 프로그래밍 패러다임이다. 선언적 프로그래밍이란? (+명령적 프로그래밍이란?) 더보기 명령적 Imperative 프로그래밍 ↔ 선언적 Declarative 프로그래밍 - 명령적..
-
[Typescript] 기본적인 타입스크립트 문법과 키워드 정리언어, 프레임워크/Javascript & Typescript 2021. 10. 6. 17:10
인프런 강의를 듣고 배운 내용에 대해 정리한 글입니다. 틀린 부분이 있다면 말씀 부탁드립니다! 올해가 가기 전 타입스크립트를 공부해야겠다고 생각했고 그 첫 단계로 타입스크립트 입문 강의를 들었다. 여러 언어 중 타입 스크립트를 선택한 이유는 1) 트랜디한 언어라는 점 2) 자바스크립트를 사용하고 있는 입장에서 러닝 커브가 적을 것 같다는 점 3) 자바스크립트와 뭐가 다른지 직접 써보고 확인하고 싶다는 점 때문이었다. 강의를 수강한 뒤 든 생각은 '자바스크립트의 확장판 느낌이군 + (자바스크립트에 비해) 사용하기 좀 번거롭네' 였다. 자바스크립트에선 신경 안 써도 됐던 타입 정의라던가, 그에 맞는 문법이라던가... 굳이 왜 이렇게까지 작성해야 되지?라는 생각이 들었다. 굳이 귀찮게 일일이 타입을 정하고 그..
-
[Javascript] Scope / Closure / Hoisting (스코프와 클로저 그리고 호이스팅)언어, 프레임워크/Javascript & Typescript 2020. 7. 17. 14:35
이전 블로그에서 옮긴 글입니다 https://blog.naver.com/jaemin-jeong?Redirect=Update&logNo=221877574892 틀린 내용을 발견하시면 댓글 부탁드립니다! Scope (스코프) 변수 접근 규칙에 따른 유효 범위, 좀 더 쉽게 말하면 변수와 그 값이 유효한 범위라고 할 수 있다. Local scope(지역 스코프)에서 선언된 변수는 Global scope(전역 스코프)에서 사용이 불가능하다. 전역에서 선언된 변수 a는 지역 스코프에서 참조할 수 있으나, 지역에서 선언된 변수 b는 바깥(전역) 스코프에서 참조할 수 없다. 특정 함수 내에서 선언된 지역 변수는 전역 변수보다 우선순위가 높다 (전역 변수는 전역 스코프를 갖는다). 함수 내에서 전역 변수에 새로운 값을..