본문 바로가기
[JavaScript] sort() 배열 정렬 메서드 sort sort 기본 문법 ✓ Array.sort([compareFunction]) ✓ compareFunction 함수가 정의 되지 않은 기본값에 대해서는 요소를 문자열로 치환하여 유니코드 기반 오름차순 정렬한다. ✓ compareFunction 함수가 정의 되어 있다면, 함수의 반환값에 따라 정렬을 수행한다. ✓ sort 함수는 복제본에 수행되지 않고 원본에 수정을 수행한다. ※ 비교함수를 사용하지 않고 sort를 사용하면 문자열로 변환 후 유니코드 기반 정렬을 한다는것에 주의하자. compareFunction 함수가 정의 되지 않은 CASE const normal = [40, 5, 1, 7]; normal.sort(); // 기본 정렬 : 유니코드 기반 오름차순 console.l.. 2024. 1. 30.
[JavaScript] 스코프와 비동기적 실행,렉시컬 환경, 클로저 다루는 내용 - 함수가 외부 변수를 기억하고 유지하는 메커니즘인 클로저 - 렉시컬 환경과 함수: 함수가 생성된 렉시컬 환경에 대한 참조와 변수 접근 - 중첩 함수와 렉시컬 환경: 함수 내부에서 선언한 함수의 동작과 렉시컬 환경 - 중첩 함수로 인해 외부 렉시컬 환경을 참조하게되며 가비지컬렉션이 동작하지 않음(메모리에 유지) 비동기 동작과 외부 스코프 변수 예제코드 1 function countdown() { let i; console.log('Countdown:'); for (i = 5; i >= 0; i--) { setTimeout(function () { console.log(i === 0 ? 'GO!' : i); }, (5 - i) * 1000); } } countdown(); 위 코드 실행시 5에.. 2023. 12. 13.
[JavaScript]객체의 메서드에 this를 쓸때 헷갈리는 동작 1. 기본 동작 JavaScript에서 객체의 메서드는 메서드가 속한 객체에 바인딩된 this 값을 가지게 됩니다. 그러나 객체의 메서드를 콜백 함수로 사용하는 과정에서 this의 값이 예상과 다르게 변할 수 있는데요. 이러한 현상은 주로 함수의 호출 방식에 기인합니다. 아래 예시를 통해 살펴보겠습니다. const obj = { method: function () { console.log(this); }, }; obj.method(); // obj 위 코드에서 obj.method()를 호출하면, 메서드 내부의 this는 obj 객체에 바인딩되어 메서드가 속한 객체인 obj가 출력됩니다. 2. this를 사용하는 메서드를 다른 함수에 콜백으로 넘겼을 때 근데 아래 코드처럼 obj.method를 사용했을때,.. 2023. 8. 29.
[JavaScript] var로 선언된 변수가 선언되기 이전에도 접근할 수 있는 이유 (feat. 스코프&호이스팅) 변수 선언 키워드인 var에 대한 아래 설명을 보고 궁금해서 공부한 내용을 작성합니다. " var : 함수 스코프를 가지며, 호이스팅(hoisting)으로 인해 변수가 선언되기 이전에도 접근할 수 있습니다. " 1. 스코프 스코프 : 유효한 참조 범위 ex) 함수내부에 선언된 변수가, 함수 내부에서만 참조가 가능하다면 >> 해당 변수의 스코프는 함수 내부 함수 내부에서 var로 선언된 변수는 지역 변수의 스코프를 가집니다. 하지만 그외에서 var로 선언된 변수는 전역변수의 스코프를 가집니다. (따라서 함수내부가 아닌 if, for 문 내부에서 선언되더라도 전역변수의 스코프를 가집니다.) 모든 블록 내부에서 let과 const로 선언된 변수는 다 지역변수의 스코프를 가집니다. (if, for문 등에서도) .. 2023. 7. 26.