이번에 정리할 내용은 Closure와 Lexical Scope에 관한 내용입니다. 최근 면접을 보고 있는데 자바스크립트 코어에 관한 부분에서 부실한 점이 많아 차근차근 정리합니다. 🤔 Closure? Lexical Scope? Closure가 뭘까요? 한 걸음 Closer~ 내 맘~ 아니구요. 클로저는 독립적인 변수를 가르키는 함수입니다. 아래 코드가 있습니다. function outerFunc() { var x = 10; var innerFunc = function () { var y = 20; console.log(x); }; innerFunc(); } outerFunc(); outerFunc이 선언되어 있고 함수 내부에는 innerFunc이 선언되고 실행되고 있습니다. 여기서 선언했다는 표현에 포인..
이번에 알아볼 알고리즘은 병합 정렬 (Merge Sort) 입니다. 합병정렬이라고도 불리며, 분할정복알고리즘 중 하나입니다. 또한 안정정렬에 속합니다. 🤔 과정 및 코드 반씩 나누는 걸 반복하여 1개가 될 때까지 나눈 후 이를 다시 병합(Merge)하면서 정렬해나갑니다. 📝 Python 예시 코드. def merge(left, right): # 왼쪽 시작값 오른쪽 시작값, 병합하며 정리하기위한 빈 배열 i = 0 j = 0 sorted_list = [] while (i < len(left)) & (j < len(right)): # 무한반복하며 왼쪽배열과 오른쪽배열에서 가장왼쪽에 있는 값을 비교 # (각 배열의 왼쪽에 있는 값이 최소값) #크기를 비요하여 작은 정렬하는 배열에 담음. if left[i] <..
React나 Node를 공부하면서, 부족하다고 느껴졌거나 중요한 내용을 정리해서 기록합니다. 처음 작성하는 내용은 비동기 처리와 밀접한 관련이 있는 Async & Await 문법입니다. 비동기 처리를 완전히 이해했다고 말하기는 부족하나, 이 글을 작성하면서도 깨닫는 부분이 많았으면 좋겠다고 생각하며 작성하는 글입니다. 부족한 부분은 댓글로 피드백해주시면 정말! 감사하겠습니다. 💡 시작하기 전에 과거 JavaScript에서는 콜백지옥이라는 말이 있었죠. 비동기 동작을 처리할 때 비동기 함수 안에 또 비동기 동작들을 넣다보면 계속 함수가 중첩이 되어 마치 피라미드처럼 코드가 작성되는 지옥과도 같은 관경을 볼 수 있습니다. 그래서 콜백지옥을 해결하고자 ES6에서 Promise라는 비동기 처리에 사용되는 객체가..
이번에 알아볼 알고리즘은 퀵 정렬 (Quick Sort) 입니다. 불안정 정렬이며, 다른 원소와 비교만으로 정렬하는 비교 정렬에 속합니다 분할정복알고리즘 중에 하나로, 평균적으로 매우 빠른 수행속도를 자랑합니다. 분할정복이란? 큰 문제를 작은 문제 단위로 쪼개면서 해결해나가는 방식 🤔 과정 및 코드 원소 안에서 원소 하나를 선택합니다. 선택한 원소를 피벗(Pivot)이라고 합니다. 피벗의 값을 기준으로 작은 원소는 왼쪽으로 큰 값은 오른쪽으로 정렬하고, 피벗 값은 사이로 들어가게 됩니다. 이후 왼쪽과 오른쪽 리스트에 각각 다시 퀵정렬을 반복하며 정렬하여 더 이상 리스트들이 분할되지 않을때 까지 반복합니다. 📝 Python 예시 코드. def QuickSort(arr): if len(arr)
이번에 알아볼 알고리즘은 삽입 정렬(Insertion Sort)입니다. 원카드를 할 때를 생각해보면, 손 패의 카드를 숫자 순으로 정렬해서 손에 쥐고 있던적 있죠? 이 상태에서 카드를 뽑게 되면 순서에 맞춰 패에 카드를 넣게 되는데, 이 방식이 삽입정렬이라고 생각하면 좋아요! 2번째 원소 부터 시작하며,선택한 원소의 앞에 있는 원소들과 비교하여 삽입할 위치를 정한 뒤 원소를 뒤로 옮기고 지정된 자리에 원소를 삽입하는 정렬 알고리즘입니다. 🤔 과정 및 코드 먼저 2번째 위치의 값을 temp에 저장하고 해당 원소보다 아래 위치에 있는 값들과 비교하며 알맞는 위치에 삽입합니다. 이후 그 다음(3번째) 위치의 값을 temp에 저장하고 아래 위치에 있는 값들과 비교하며 삽입을 반복합니다. 📝 Python 예시 코..