배열의 특징 자바스크립트에서 배열의 타입은 객체 타입이다. 배열 타입이란 것은 따로 존재하지 않는다. 배열의 생성자 함수는 Array, 프로토타입 객체는 Array.prototype이다. Array.prototype은 배열을 위한 빌트인 메서드를 제공한다. 배열은 객체지만 일반 객체와 구별되는 특징을 갖는다. 구분 객체 배열 구조 프로퍼티 키와 값 인덱스와 요소 값의 참조 프로퍼티 키 인덱스 값의 순서 X O length 프로퍼티 X O 따라서, 배열은 반복문을 통해 순차적으로 값에 접근하기 적합한 자료구조이다. 자바스크립트의 배열은 희소 배열이다 희소 배열이란 배열의 요소가 연속적으로 이어져 있지 않고 일부가 비어 있는 배열을 말한다. 자바스크립트의 배열은 일반적인 배열의 동작을 흉내내는 객체이다. 자..
문제 링크 Subsets - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 백트래킹(Backtracking) 문제 풀이 해당 문제는 중복되지 않는 숫자들로 이루어진 배열이 주어지고, 이 숫자들로 만들 수 있는 부분집합을 배열로 반환하는 문제이다. 가능한 후보들을 모두 탐색해야 부분집합을 구할 수 있기에 가능한 후보들을 찾다가 조건을 만족하지 않으면 다시 되돌아가는 백트래킹 방식을 사용할 수 있다. 해당 문제가 재귀적으로 어떻게 동작하는지 자세히 살펴보..
문제 링크 Minimum Path Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 다이나믹 프로그래밍 (Dynamic Programming) 문제 풀이 해당 문제는 n x m 매트릭스를 나타내는 2차원 배열이 주어지고, (0,0)에서 (n, m)으로 가는 경로의 최소 합을 구하는 문제이다. 경로 이동은 현재 원소에서 오른쪽이나 아래로만 할 수 있다. 그러므로 각 원소의 이전 경로의 원소는 왼쪽에 있거나 위에 있다. 이는 왼쪽 원소까지의 최소 ..
문제 링크 Min Cost Climbing Stairs - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 다이나믹 프로그래밍(Dynamic Programming) 문제 풀이 해당 문제는 각 계단을 올랐을 때의 비용을 나타내는 숫자 배열이 주어지고, 계단을 다 올랐을 때의 최소 비용을 구하는 문제이다. 계단은 1칸 또는 2칸을 오를 수 있다. 생각해보면 출발 지점의 비용은 없으므로 Index 0과 Index 1 계단까지 올라가는 최소 비용은 0이다. 그..
문제 링크 Top K Frequent Words - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com Top K Frequent Elements - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 유형 해쉬 맵, 정렬 ..
this 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수 자바스크립트의 함수를 호출하면 arguments 객체와 this가 암묵적으로 함수 내부에 전달된다. this를 통해 객체의 프로퍼티나 메서드를 참조한다. 자바스크립트의 this 바인딩은 함수 호출 방식에 의해 동적으로 결정된다. (자바나 C++ 같은 클래스 기반 언어에서 this는 항상 클래스가 생성하는 인스턴스를 가리킨다.) ❓ 바인딩 ✅ 식별자와 값을 연결하는 과정 ✅ 변수 선언은 변수이름과 확보된 메모리 공간의 주소를 바인딩하는 것 ✅ this 바인딩은 this와 this가 가리킬 객체를 바인딩하는 것 함수 호출 방식과 this 바인딩 this 바인딩은 함수 호출 시점에 결정되고, 함수가 호출된 방식에 따라 달라진다...
자바스크립트 객체의 분류 자바스크립트 객체는 다음과 같이 3개의 객체로 분류한다. 표준 빌트인 객체 (네이티브 객체) ECMAScript 사양에 정의된 객체 자바스크립트 실행 환경(브라우저 또는 Node.js)과 상관없이 언제나 사용 전역 객체의 프로퍼티로 제공, 별도의 선언 없이 전역 변수를 언제나 참조 가능 애플리케이션 전역의 공통 기능을 제공 호스트 객체 ECMAScript 사양에 정의되어 있진 않지만 자바스크립트 실행 환경에서 추가로 제공하는 객체 브라우저 환경 ➡️ DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web Worker와 같은 클라이언트 사이드 Wep API를..
암묵적 전역 function foo() { x = 10; } foo(); console.log(x); // 10 foo 함수에서 선언하지 않은 x 변수에 값 10을 할당하게 되면 자바스크립트 엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성한다. 이러한 현상을 암묵적 전역이라고 한다. 이는 개발자의 의도와 상관없이 오류를 발생시킬 가능성이 크다. 따라서 반드시 var, let, const 키워드를 사용한 변수 선언을 한 후 사용해야 한다. strict mode 자바스크립트 언어의 문법을 좀 더 엄격히 적용해 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬만한 코드에 대해 명시적인 에러를 발생시킨다. ES5부터 추가되었다. ESLint 같은 린트 도구를 사용하면 정적 ..