변수란 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다.변수를 선언하면 값을 저장하기 위한 메모리 공간을 확보하고 변수 이름과 확보된 메모리 공간의 주소를 연결해서 값을 저장할 수 있게 준비한다.변수의 선언은
자바스크립트는 7개의 데이터 타입을 제공하며 원시 타입, 객체 타입으로 나뉘어진다.원시 타입에는 숫자, 문자열, 불리언, undefined, null, 심볼 타입이 있다.객체 타입에는 객체, 함수, 배열 등 오브젝트 타입이 있다.자바스크립트는 하나의 숫자타입만 존재하며
삼항 조건 연산자는 조건식의 평가 결과에 따라 반환할 값을 결정한다. 자바스크립트의 유일한 삼항 연산자이다.조건식 ? 조건식이 true일 때 반환할 값 : 조건식이 false일 때 반환할 값지수 연산자는 좌항의 피연산자를 밑으로, 우항의 피연산자를 지수로 거듭 제곱하여
switch 문은 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮긴다.if ... else 문의 조건식은 불리언 값으로 평가되어야 하지만 itch 문의 표현식은 불리언 값보다는 문자열이나 숫자 값인 경우가 많다.다시 말해, if
개발자와 의도적으로 타입을 변환하는 것을 명시적 타입 변환 또는 타입 캐스팅이라고 한다.개발자와 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것을 암묵적 타입 변환 또는 타입 강제 변환이라고 한다.명시적 타입 변환
자바스크립트는 객체 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 "모든 것"이 객체다. 원시 값을 제외한 나머지 값(함수, 배열, 정규식 등)은 모두 객체다.원시 타입의 값은 변경 불가능한 값이지만 객체 타입의 값은 변경 가능한 값이다.객체는 프로퍼티와 메
다음과 같은 조건을 만족하는 객체를 일급 객체라 한다.무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다.변수나 자료구조(객체, 배열 등)에 저장할 수 있다.함수의 매개변수에 전달할 수 있다.함수의 반환값으로 사용할 수 있다.
자바스크립트 엔진은 프로토타입 체인을 따라 프로퍼티/메서드를 검색한다. 다시 말해, 자바스크립트 엔진은 객체 간의 상속 관계로 이루어진 프로토타입의 계층적인 구조에서 객체의 프로퍼티를 검색한다. 따라서 프로토타입 체인은 상속과 프로퍼티 검색을 위한 메커니즘이라고 할 수
자바스크립트 객체는 다음과 같이 크게 3개의 객체로 분류할 수 있다.표준 빌트인 객체표준 빌트인 객체는 ECMAScript 사양에 정의된 객체를 말하며, 애플리케이션 전역의 공통 기능을 제공한다. 표준 빌트인 객체는 ECMAScript 사양에 정의된 객체이므로 자바스크
실행 컨텍스트는 실행 컨텍스트 스택과 렉시컬 환경으로 이루어진다. 실행 컨텍스트 환경은 코드의 실행 순서를 관리하고, 렉시컬 환경을 식별자 구별과 스코프를 관리한다.
함수의 구분 ES6 이전의 모든 함수는 사용 목적에 따라 명확한 구분이 없으므로 호출 방식에 특별한 제약이 없고 생성자 함수로 호출되지 않아도 프로토타입 객체를 생성한다. 이는 혼란스러우며 실수를 유발할 가능성이 있고 성능에도 좋지 않다. |ES6 함수의 구분|con
배열 생성 Array.of ES6에서 도입된 Array.of 메서드는 전달된 인수를 요소로 갖는 배열을 생성한다. Array.of는 Array 생성자 함수와 다르게 전달된 인수가 1개이고 숫자이더라도 인수를 요소로 갖는 배열을 생성한다. Array.from ES6에서
Number 프로퍼티 Number.NaN Number.NaN은 숫자가 아님(Not-a-Number)을 나타내는 숫자값이다. Number.NaN은 window.NaN과 같다. Number 메서드 Number.prototype.toFixed toFixed 메서드는 숫자를
Math 프로퍼티 Math.PI 원주율 PI 값(3.141592653589793)을 반환한다. Math 메서드 Math.round Math.round 메서드는 인수로 전달된 숫자의 소수점 이하를 반올림한 정수를 반환한다. Math.ceil Math.ceil 메서드는
Date 생성자 함수 Date는 생성자 함수다. Date 생성자 함수로 생성한 Date 객체는 내부적으로 날짜와 시간을 나타내는 정수값을 갖는다. 이 값은 1970년 1월 1일 00:00:00(UTC)을 기점으로 Date 객체가 나타내는 날짜와 시간까지의 밀리초로 나타
빌트인 이터러블 자바스크립트는 이터레이션 프로토콜을 준수한 객체인 빌트인 이터러블을 제공한다. 다음의 표준 빌트인 객체들은 빌트인 이터러블이다. |빌트인 이터러블|Symbol.iterator 메서드| |:-:|:-:| |Array|Array.prototype[Symbol.iterator]| |String|String.prototype[Symbol.iter...
브라우저는 다음과 같은 과정을 거쳐 렌더링을 수행한다. 브라우저는 HTML, CSS, 자바스크립트, 이미지, 폰트 파일 등 렌더링에 필요한 리소스를 요청하고 서버로부터 응답을 받는다. 브라우저의 렌더링 엔진은 서버로부터 응답된 HTML과 CSS를 파싱하여 DOM과 CSSOM을 생성하고 이들을 결합하여 렌더 트리를 생성한다. 브라우저의 자바스크립트 엔진...
커스텀 이벤트 디스패치 생성된 커스텀 이벤트는 dispatchEvent 메서드로 디스패치(이벤트를 발생시키는 행위)할 수 있다. dispatchEvent 메서드에 이벤트 객체를 인수로 전달하면서 호출하면 인수로 전달한 이벤트 타입의 이벤트가 발생한다. 일반적으로 이벤트 핸들러는 비동기 처리 방식으로 동작하지만 dispatchEvent 메서드는 이벤트 핸들...
디바운스 연이어 호출되는 함수들 중 마지막 함수(또는 제일 처음)만 호출하도록 하는 것 쓰로틀 마지막 함수가 호출된 후 일정 시간이 지나기 전에 다시 호출되지 않도록 하는 것 디바운스와 쓰로틀의 차이점 디바운싱과 스로틀의 가장 큰 차이점은 스로틀은 적어도 X 밀리 초마다 정기적으로 기능 실행을 보장한다는 것입니다. Debounce 는 아무리 많은 이벤트...
REST는 HTTP를 기반으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한 아키텍처고, REST API는 REST를 기반으로 API를 구현한 것을 의미한다. REST API의 구성 REST API는 자원, 행위, 표현의 3가지 요소로 구성된다. REST는 자체
async, await는 프로미스 기반으로 동작한다. async, await를 사용하면 프로미스의 then/catch/finally 후속 처리 메서드에 콜백 함수를 전달해서 비동기 처리 결과를 후속 처리할 필요 없이 마치 동기 처리처럼 프로미스를 사용할 수 있다. async 함수 await 키워드는 반드시 async 함수 내부에서 사용해야 한다. asyn...
깊은 복사(내부 프로퍼티를 순회하며 함수를 재귀적으로 호출하는 방식)깊은 복사(JSON을 활용한 방식)JSON 문법으로 표현된 문자열로 전환했다가 다시 JSON 객체로 바꾸는 방법이다. JSON이 처리 가능한 7가지 타입(string, number, object, ar
this는 호출하는 방식에 따라 바인딩이 달라진다. 함수 호출은 this에 window가 바인딩되고 메서드의 호출은 this에 메서드의 . 앞에 있는 객체가 바인딩된다. 하지만 메서드 안에서 함수를 호출할때는 호출 함수 앞에 .이 없다면 window를 호출한다. 이럴
클로저를 사용하려면 무조건 return을 사용해야 한다고 생각하고 있었다. 하지만 다음 코드를 보며 생각을 고쳤다.별도의 외부 객체인 window의 메서드(setTiemout 또는 setInterval)에 전달할 콜백 함수 내부에서 지역변수를 참조한다.별도의 외부객체인