클로저란? 주변 상태(어휘적 환경)에 대한 참조와 함께 묶인(포함된) 함수의 조합입니다. 즉, 클로저는 내부 함수에서 외부 함수의 범위에 대한 접근을 제공합니다. JavaScript에서 클로저는 함수 생성시 함수가 생성될 때마다 생성됩니다. - MDN 쉽게말해서 이미 생명 주기가 끝난 외부 함수의 변수를 참조하는 함수입니다. 함수 내부에 함수가 존재할 경우 const name = 'start' // name은 전역변수 function func1() { var name = "coriny"; // name은 func1 의해 생성된 지역 변수이다. function func2() { // func2() 은 내부 함수이며, 클로저다. console.log(name); // coriny 즉, 부모 함수에서 선언된 ..
Promise는 해석하면 '약속' 즉, 비동기 처리에 대해, 처리가 끝나면 알려달라는 약속입니다. 비동기 처리 • 특정 코드의 실행이 완료될 때까지 기다리지 않고 다음 코드를 먼저 수행하는 자바스크립트의 특성 자바 스크립트는 비동기 처리를 위한 하나의 패턴으로 콜백함수를 사용하였지만 에러의 처리가 곤란하고 콜백지옥으로 인해 가독성도 떨어지고 여러개의 비동기 처리를 한번에 처리하는데 한계가 있었습니다. Promise는 이러한 비동기 처리를 위한 객체이며 전통적인 콜백 패턴이 가진 단점을 보완하고 비동기 처리의 성공 또는 실패와 같은 최종결과를 명확하게 표현할수가 있습니다. Promise의 기본 구조 const myPromise = new Promise((resolve, reject) => { // 비동기 ..
선택정렬이란? 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 정렬되지 않은 부분의 가장 앞의 데이터와 교환해나가는 알고리즘입니다. 직관적이고 단순한 정렬방법중 하나입니다. 정렬되지 않은 값중에서 가장 작은 숫자를 선택하는 방식으로 정렬을 진행합니다. 시간 복잡도 Worst : O(n²) Average : O(n²) Best : O(n²) 진행 방법 1. 주어진 배열이 있습니다. 5 3 2 1 4 2. 가장 첫번째 값을 작은 값이라고 가정하고 뒤로 가면서 비교를 합니다. 5 3 2 1 4 3. 작은 값을 하나씩 찾습니다. 첫번째로 3, 그다음 2, 그다음 1 , 4는 1보다 작으므로 1, 가장 작은 값을 찾아갑니다. 5 3 2 1 4 4. 가장 작은 값을 만나면 비교하던 숫자와 자리를 바꿉니다. ..

삽입정렬이란? 간단하면서도 효과적인 알고리즘중 하나입니다. 두번째 자료부터 시작하여 그 앞의 자료들과 비교하여 삽입할 위치를 지정한 후 자료를 뒤로 옮기고 지정한 자리에 자료를 삽입하여 정렬하는 알고리즘 입니다. 시간복잡도 Worst : O(n²) Average : O(n²) Best : O(n) 진행 방법 주어진 배열 : [5, 12, 1, 6, 9] 0번째 인덱스는 정렬되어있다 가정하고 1번째 인덱스부터 왼쪽으로 하나씩 비교를 합니다. 알고리즘으로 구현해보면 • 정렬기준이 되는 배열은 0번째인덱스는 정렬되어있다고 가정하고 1번째부터 하나씩 늘어나며 끝까지 비교합니다. i = 1; i < n; i++ • 정렬기준이 되는 배열은 기준배열 -1씩 줄어들면서 비교하며 진행. 배열에서 음수배열은 없으므로 0보..
콜백함수란? callback = call(부르다) + back(되돌아오다) 즉, 정의된 함수의 참조를 통해 나중에 (back)호출(call)하는것을 의미합니다. 콜백 함수는 다른 코드의 인자로 넘겨주는 함수입니다. 인자로 넘겨준다는 얘기는 콜백함수를 넘겨받는 코드가 있다를 의미하고 인자를 넘겨줌으로써 제어권도 함께 위임한다고 할수 있습니다. 콜백 함수를 위임 받은 코드는 자체적으로 내부 로직에 의해 이 콜백함수를 적절한 시점에 실행하게 됩니다. var count = 0; var count = 0; var Func = function() { console.log(count); if(++count > 4) clearInterval(timer); }; var timer = setInterval(Func, 30..

실행 컨텍스트 • 자바 스크립트가 실행 될 때 생성되는 하나의 실행 단위입니다. • 자바 스크립트는 자신만의 독특한 과정으로 신행 컨텍스트를 만들고 그 안에서 실행이 이루어 집니다. • 이 실행 컨텍스트는 자신만의 유효 범위(Scope - 스코프)를 갖는데 이 과정에서 클로저를 구현할 수 있습니다. • 실행할 코드에 제공할 환경 정보들을 모아놓은 객체입니다. 실행 컨텍스트의 개념 실행 컨텍스트를 이해하려면 콜 스택(call stack)이라는 개념이 필요합니다. 콜스택은 함수를 호출할 때 해당 함수의 호출 정보가 차곡차곡 쌓여있는 스택을 말합니다. 예를 들어서 빠저 나올수 없는 통로에 짐을 하나씩 넣습니다. 그렇게 되면 가장 나중에 들어간 짐이 가장빨리 나오게 되고 제일 먼저 들어간 짐이 가장 나중에 나오..
여러 값을 하나의 변수에 저장하는 자료 구조입니다. 동일한 변수명에 여러 개의 값을 담을 수 있으며 각 요소는 인덱스를 사용하여 접근할 수 있습니다. 배열의 생성은 배열[ ]안에 숫자, 문자를 넣어 배열을 생성할수 있습니다. let weekday = ["월요일","화요일","수요일","목요일","금요일"]; 배열의 값을 넣지 않고 크기만 지정하고 싶다면 배열을 생성한다는 new Array()안에 해당하는 크기만 넣어 생성할수 있습니다. 또한 빈 배열을 생성후 배열값을 입력할수도 있습니다. let weekday = new Array(5); let weekday = [,,,,]; weekday[0] = '월' weekday[1] = '화' weekday[2] = '수' weekday[3] = '목' week..
Java에서의 this, Python에서의 self는 명확하게 현재 인스턴스 자신을 나타냅니다. 객체 내에서 this를 씀으로써 자신의 인스턴스 변수나 함수에 접근을 할수가 있습니다. 하지만 JavaScript에서의 this는 실행 컨텍스트에 따라 다르게 동작합니다. 함수가 어떻게 호출되었느냐에 따라 this의 값이 동적으로 결정됩니다. 또한 일반적인 함수에서 this는 호출한 객체를 나타내며, 화살표 함수에서는 함수가 생성될 때 상위 스코프의 this를 유지합니다. this란?? 함수가 호출되는 시점의 실행 컨텍스트(Execution Context)입니다. JavaScript의 실행 컨텍스트는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체 입니다. 즉, 함수를 실행하는 환경(호출하는 방법, 환경)이..