표준 빌트인 객체인 String은 원시 타입인 문자열을 다룰 때 유용한 프로퍼티와 메서드를 제공한다. String 생성자 함수 String 객체는 생성자 함수 객체이므로 new 연산자와 함께 호출하여 String 인스턴스를 생성할 수 있다. String 메서드 String 객체는 원본 String 래퍼 객체를 직접 변경하는 메서드는 존재하지 않는다. 즉, String 객체의 메서드는 언제나 새로운 문자열을 반환한다. 문자열은 변경 불가능(Immutable)한 원시 값이기 때문에 String 래퍼 객체도 읽기 전용 객체로 제공된다. String 래퍼 객체는 읽기 전용 객체다. 즉, writable 프로퍼티 어트리뷰트 값이 false다. String.prototype.indexOf 메서드를 호출한 문자열에서..
Date Date는 빌트인 객체이면서 생성자 함수이다. UTC: 국제 표준시 KST: 한국 표준시, UTC에 9시간을 더한 시간으로 UTC보다 9시간 빠르다. UTC 00:00 AM = KST 09:00 AM 현재 날짜와 시간은 자바스크립트 코드가 실행된 시스템의 시계에 의해 결정된다. Date 생성자 함수 Date 생성자 함수로 생성한 Date 객체는 내부적으로 날짜와 시간을 나타내는 정수값을 갖는다. (내부적) 정수값은 1970년 1월 1일 00:00:00(UTC)을 기점으로 Date 객체가 나타내는 날짜와 시간까지의 밀리초를 나타낸다. (콘솔) 날짜와 시간 정보를 출력한다. /* 86400000ms는 1day를 의미한다. 1s = 1,000ms 1m = 60s * 1,000ms = 60,000ms ..
Number는 표준 내장 객체 중 하나로, 원시 타입인 숫자를 다룰 때 유용한 프로퍼티와 메서드를 제공한다. Number 생성자 함수 Number 표준 빌트인 객체는 생성자 함수 객체이다. new 연산자와 함께 호출해 Number 인스턴스를 생성할 수 있다. Number 생성자 함수에 인수를 전달하여 new 연산자와 함께 호출하면 [[NumberData]](=[[PrimitiveValue)라는 접근할 수 없는 내부 슬롯에 인수로 전달된 숫자를 할당한 Number 래퍼 객체를 생성한다. 인수를 전달하지 않고 호출하면 내부 슬롯에 0이 할당된다. 인수로 숫자가 아닌 값을 전달하면 숫자로 강제 변환 후 할당한다. Number 메서드 Number.isFinite 인수로 전달된 숫자값이 정상적인 유한수(Infin..
배열의 특징 자바스크립트에서 배열의 타입은 객체 타입이다. 배열 타입이란 것은 따로 존재하지 않는다. 배열의 생성자 함수는 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) 문제 풀이 해당 문제는 중복되지 않는 숫자들로 이루어진 배열이 주어지고, 이 숫자들로 만들 수 있는 부분집합을 배열로 반환하는 문제이다. 가능한 후보들을 모두 탐색해야 부분집합을 구할 수 있기에 가능한 후보들을 찾다가 조건을 만족하지 않으면 다시 되돌아가는 백트래킹 방식을 사용할 수 있다. 해당 문제가 재귀적으로 어떻게 동작하는지 자세히 살펴보..
자바스크립트 객체의 분류 자바스크립트 객체는 다음과 같이 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 같은 린트 도구를 사용하면 정적 ..