📖 변수란? > 변수는 하나의 값을 저장하기 위해 확보한 메로리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다. 간단히 말하자면 변수는 프로그래밍 언어에서 값을 저장하고 참조하는 메커니즘으로, 값의 위치를 가리키는 상징적인 이름이다. ✔️ 변
☑️ 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다 > 숫자타입 : 숫자, 정수와 실수 구분 없이 하나의 숫자 타입만 존재 문자열 타입 : 문자열 불리언 타입 : true, false undefined 타입 null 타입 : 값이 없다는 것을 의도적으로 명시할
값은 식(표현식)이 평가되어 생성된 결과를 말한다.변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름이라고 했다. 따라서 변수에 할당되는 것은 값이다.리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해
산술 연산자는 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다. 산술 연산이 불가능한 경우. NAN을 반환한다이항 산술 연산자이항 산술 연산자는 2개의 피연산자를 산술 연산하여 숫자 값을 만든다.단항 산술 연산자단항 산술 연산자는 1개의 피연산자를 산
블록문은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다. 자바스크립트는 블록문을 하나의 실행 단위로 취급한다. 블록문은 단독으로 사용할 수도 있으나 일반적으로 제어문이나 함수를 정의할 때 사용하는 것이 일반적이다.조건문은 주어진 조건
✔️ 타입 변환 이란? 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환 또는 타입 캐스팅이라 한다. 개발자의 의도와는 상관없이 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다. 이를 암묵적 타입 변환 또는 타입 강제 변
⭐️ 객체란 ? 자바스크립트는 객체기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 "모든 것"이 객체다. 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)은 모두 객체다. 원시 타입은 단 하나의 값만 나타내지만 객체 타입은 다양한 타입의 값을 하나의
원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 이에 비해 객체 타입의 값, 즉 객체는 변경 가능한 값이다.원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다. 이에 비해 객체를 변수에 할당하면 변수(확보된 메모리 공간)에는 참조 값이
⭐️ 함수란? > 프로그래밍 언어의 함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 함수는 함수 정의를 통해 생성한다. > 인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시해야 한다. 이를 함수 호출
모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라 한다. 즉, 스코프는 식별자가 유효한 범위를 말한다. 자바스크립트 엔진은 이름이 같은 두 개의 변수 중에
전역 변수의 무분별한 사용은 위험하다. 전역 변수를 반드시 사용해야 할 이유를 찾지 못한다면 지역 변수를 사용해야 한다.변수는 선언에 의해 생성되고, 할당을 통해 값을 가지며 언젠가 소멸한다. 즉, 변수는 생명 주기가 있다.변수에 생명 주기가 없다면 한번 선언된 변수
var 키워드로 선언한 변수는 중복 선언이 가능하다.var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다. 따라서 함수 외부에서 var 키워드로 선언한 변수는 코드 블록 내에서 선언해도 모두 전역 변수가 된다.함수 레벨 스코프는 전역 변수를
내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드다.ECMAScript 사양에 등장하는 이중 대괄호 (\[ ... ])로 감싼 이름들이 내부 슬롯과 내부 메서드다.자바스크립트
new 연사자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 생성자 함수란 new 연산자와 함께 호출하여 객체를 생성하는 함수를 말한다. 생성자 함수에 의해 생성된 객체를 인스턴스라한다.자바스크립트는 Object 생성자 함수 이외에도 Stri
무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다변수나 자료구조(객체, 배열 등)에 저장할 수 있다.함수의 매개변수에 전달할 수 있다.함수의 반환값으로 사용할 수 있다.함수는 값을 사용할 수 있는 곳이라면 어디서든지 리터럴로 정의할 수 있으며 런타임에 함
자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이다.자바스크립트는 객체 기반의 프로그래밍 언어이며 자바스크립트를 이루고 있는 거의 "모든 것"이 객체다.객체지향 프로그래밍은 여러 개의 독립적 단위, 즉 객체의
전역 스코프에도 x 변수의 선언이 존재하기 않기 떄문에 ReferenceError를 발생시킬 것 같지만 자바스크립트 엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성한다. 이때 전역 객체의 x 프로퍼티는 마치 전역 변수처럼 사용할 수 있다. 이러한 현상을 암묵적
✔️ 표준 빌트인 객체 자바 스크립트는 Object, String, Number, Boolean, Symbol, Date, Math, RegExp, Array, Map/Sat, WeakMap/WeakSet, Function, Promise, Reflect, Proxy,
동작을 나타내는 메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경할 수 있어야 한다. 이때 메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 먼저 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 한다.자신이 속한 객체 또는 자신이 생성할 인스턴스를
실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 실행 컨텍스트를 바르게 이해하면 이런 것들을 알 수 있다. 자바스크립트가 스코프를 기반으로 식별자와 식별자에 바인딩된 값을 관리하는 방식 호이스팅이 발생하는 이유 클로저의 동작 방식 태스크 큐와 함
클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 😰 무슨 말인지 모르겠다. 예제를 봐 봅시다.이 같은 현상이 발생하는 이유는 자바스크립트가 렉시컬 스코프를 따르는 프로그래밍 언어이기 떄문이다자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디
✔️ 클래스는 프로토타입의 문법적 설탕인가? 클래스와 생성자 함수의 몇가지 차이 ⭕️ 클래스를 new 연산자 없이 호출하면 에러가 발생한다. 하지만 생성자 함수를 New 연산자 없이 호출하면 일반 함수로서 호출된다. 클래스는 상속을 지원하는 extends 와 super
ES6 이전의 함수는 사용 목적에 따라 명확히 구분되지 않는다. 즉 ES6 이전의 모든 함수는 일반 함수로서 호출할 수 있는 것은 물론 생성자 함수로서 호출할 수 있다.일반 함수는 constructor이지만 ES6의 메서드와 화살표 함수는 non-constructor다
😁 배열이란? > 배열은 여러 개의 값을 순차적으로 나열한 자료구조다. 배열은 사용 빈도가 매우 높은 가장 기본적인 자료구조다. 배열은 사용 빈도가 높으므로 능숙하게 다룰 수 있다면 코딩에 매우 도움이 된다. 배열이 가지고 있는 값을 요소라고 부른다. 원시값은 물
표준 빌트인 객체인 Number는 원시 타입인 숫자를 다룰 떄 유용한 프로퍼티와 메서드를 제공한다.표준 빌트인 객체인 Number 객체는 생성자 함수 객체다. 따라서 new 연산자와 함꼐 호출하여 Number 인스턴스를 생성할 수 있다.Number 생성자 함수에 인수를
표준 빌트인 객체인 Math는 수학적인 상수와 함수를 위한 프로퍼티와 메서드를 제공. Math는 생성자 함수가 아니다. 따라서 Math는 정적 프로퍼티와 정적 메서드만 제공원주율 PI값을 반환한다.Math.abs 메서드는 인수로 전달된 숫잡이 절대값을 반환. 절대값은
표준 빌트인 객체인 Date는 날짜와 시간을 위한 메서드를 제공하는 빌트인 객체이면서 생성자 함수다. Date 생성자 함수 ❓ Date는 생성자 함수다. Date 생성자 함수로 생성한 Date 객체는 내부적으로 날짜와 시간을 갖는다. new Date() ❗ > Da
정규 표현식이란 ❓ 정규 표현식은 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어다. 정규 표현식은 문자열을 대상으로 패턴 매칭 기능을 제공한다. 패턴 매칭 기능이란 특정 패턴과 일치하는 문자열을 검색하거나 추출 또는 치환할 수 있는 기능을 말한다
표준 빌트인 객체인 String은 원시 타입인 문자열을 다룰 때 유용한 프로퍼티와 메서드를 제공한다. String 생성자 함수 ❓ > 표준 빌트인 객체인 String 객체는 생성자 함수 객체이므로 new 연산자와 함께 호출하여 String 인스턴스를 생성할 수 있다.
심벌은 ES6에서 도입된 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값이다. 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다. 따라서 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용.심벌값은 Symbol 함수를 호출하여 생성해야 한다.
이터레이션 프로토콜 ❓ > ES6에서 도입된 이터레이션 프로토콜은 순회 가능한 데이터 컬렉션을 만들기 위해 ECMAScript 사양에 정의하여 미리 약속한 규칙이다. 이터러블 ❔ >이터러블 프로토콜을 준수한 객체를 이터러블이라 한다. 이터러블은 Symbol.itera
ES6에서 도입된 스프레드 문법 ...은 하나로 뭉쳐 있는 여러 값들의 집합을 펼처서 개별적인 값들의 목록으로 만든다.스프레드 문법을 사용할 수 있는 대상은 Array, String, Map, Set, DOM 컬렉션, arguments와 같이 for...of 문으로 순
디스트럭처링 할당(구조 분해 할당)은 구조화된 배열과 같은 이터러블 또는 객체를 destructuring(비구조화, 구조파괴)하여 1개 이상의 변수에 개별적으로 할당하는 것을 말한다. 배열과 같은 이터러블 또는 객체 리터럴에서 필요한 값만 추출하여 변수에 할당할 떄 유
Set ❓ >Set 객체는 중복되지 않는 유일한 값들의 집합이다. Set 객체는 배열과 유사하지만 다음과 같은 차이가 있다. | 구분 | 배열 | Set 객체 | |:----------:|:----------:|:----------:| | 동일한 값을 중복하여 표함할
구글의 V8 자바스크립트 엔진으로 빌드된 런타임 환경인 Node.js의 등장으로 자바스크립트는 웹 브라우저를 벗어나 서버 사이드 애플리케이션 개발에서도 사용할 수 있는 범용 개발 언어가 되었다. 하지만 자바스크립트가 가장 많이 사용되는 분야는 역시 웹 브라우저 환경에서
23장 '실행 컨텍스트"에서 살펴본 바와 같이 함수를 호출하면 함수 코드가 평가되어 함수 실행 컨텍스트가 생성된다. 이떄 생성된 함수 실행 컨텍스트는 실행 컨텍스트 스택에 푸시되고 함수코드가 실행된다. 함수 코드의 실행이 종료하면 함수 실행 컨텍스트는 실행 컨텍스트 스
Ajax란 자바스크립트를 사용하여 브라우저가 서버에게 비동기 방식으로 데이터를 요청하고, 서버가 응답한 데이터를 수신하여 웹페이지를 동적으로 갱신하는 프로그래밍 방식을 말한다. Ajax는 브라우저에서 제공하는 Web API인 XMLHttpRequest 객체를 기반으로
REST는 HTTP를 기반으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한 아키텍처고, REST API는 REST를 기반으로 서비스 API를 구현한 것을 의미한다.REST API는 자원, 행위, 표현의 3가지 요소로 구성된다. REST는 자체 표현 구조로 구성되
자바스크립트는 비동기 처리를 위한 하나의 패턴으로 콜백 함수를 사용한다. 하지만 콜백 패턴은 콜백 헬로 인해 가독성이 나쁘고 비동기 처리 중 발생한 에러의 처리가 곤란하며 여러 개의 비동기 처리를 한번에 처리하는 데도 한계가 있다. ES6에서는 비동기 처리를 위한 또
제너레이터란 ❓ ES6에서 도입된 제너레이터는 코드 블록의 실행을 일시 중지했다가 필요한 시점에 재개할 수 있는 특수한 함수다. 제너레이터와 일반 함수의 차이는 다음과 같다. 제너레이터 함수는 함수 호출자에게 함수 실행의 제어권을 양도할 수 있다. 일반 함수를 호출하
에러가 발새하지 앟는 코드를 작성하는 것은 불가능하다.. 따라서 에러는 언제나 발생할 수 있다. 발생한 에러에 대해 대처하지 않고 방치하면 프로그램은 강제 종료된다.try... catch 문을 사용해 발생한 에러에 적절하게 대응하면 프로그램이 강제 종료되지 않고 계속해
모듈이란 애플리케이션을 구성하는 개별적 요소로서 재사용 가능한 코드 조각을 말한다. 일반적으로 모듈은 기능을 기준으로 파일 단위로 분리한다. 이떄 모듈이 성립하려면 자신만의 파일 스코프(모듈 스코프)를 가질 수 있어야 한다. 자신만의 파일 스코프를 갖는 모듈의 모든