1.1 프로그래밍이란? > 프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다. 프로그래밍을은 Computational thinking(컴퓨팅 사고)를 가지고 정확하고 상세하게 요구사항을 설명하는 작업이다. 추상적이거나 상대적인 개념보다는 기준이 확실
2.3 자바스크립트 성장의 역사 2.3.4 Node.js Node.js는 다양한 플랫폼에 적용할 수 있지만 서버 사이드 애플리케이션 개발에 주로 사용되며, 이에 필요한 모듈, 파일 시스템, HTTP 등 빌트인(내장) API를 제공한다. 프런트엔드와 백엔드 영역에서 자
3.2 웹 브라우저 3.2.1 개발자 도구 크롬 브라우저가 제공하는 개발자 도구(DevTools)는 웹 애플리케이션 개발에 필수적인 강력한 도구다. 윈도우 : F12 또는 Ctrl + Shift + I macOS : command + option + I 개발자 도구
4.1 변수란 무엇인가? 왜 필요한가? 다음과 같은 자바스크립트 코드를 실행한다고 가정하자. 자바스크립트 엔진은 위 코드를 계산(평가.evaluation)하려면 먼저 10, 20, +라는 기호(리터럴.literal과 연산자.operator)의 의미를 알고 있어야 하며
값(value)는 식 표현식(expression)이 평가(evaluate)되어 생성한 결과를 말한다.모든 값은 데이터 타입을 가지며, 메모리에 2진수, 즉 비트의 나열로 저장된다.변수는 하나의 값을 저장하기 위해 확보된 메모리 공간 자체 또는 그 메모리 공간을 식별하기
데이터 타입(data type)은 값의 종류를 말한다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다.자바스크립트가 제공하는 데이터 타입의 특징을 살펴보자.C, Java의 경우 정수와 실수를 구분하여 다양한 숫자 타입을 제공하지만, 자바스크립트는 독특하게 하나의
연산자는(operator)는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산(operation) 등을 수행해 하나의 값을 만든다. 이때 연산의 대상을 피연산자(operand)라 한다. 피연산자가 "값"이라는 명사의 역할을 한다며 연산자는
제어문(control flow statement)은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용한다. 일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행된다. 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다. 그로인해
개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환(explicit coercion) 또는 타입 캐스팅(type casting)이라 하며개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되는 것을 암묵적
10.1 객체란? 원시 타입은 단 하나의 값만 나타내지만 객체 타입은 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조다. >원시 타입의 값, 즉 원시 값은 변경 불가능한 값(immutable value)이지만 객체 타입의 값, 즉
11.1 원시 값 자바스크립트가 제공하는 데이터 타입은 원시 타입과 객체 타입으로 구분할 수 있다. 두 타입은 크게 세가지 측면에서 다르다. 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 이에 비해 객체(참조) 타입의 값, 즉 객체는 변경 가능한 값이다. 원시
12.1 함수란? 수학의 함수인 ' f(x, y) = x + y '를 자바스크립트의 함수로 표현해 보자. >프로그래밍 언어의 함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 다음은 함수의 구성 요소이다. 매개면수(pa
모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다.이를 스코프라 한다. 즉, 스코프는 식별자가 유효한 범위를 말한다.다음 예제가 어떻게 동작하는지 보자.자바스크립트 엔진은
14.1 변수의 생명 주기 전역 변수의 무분별한 사용은 위험하다. 전역 변수의 필요성이 없다면 지역 변수 사용을 권장한다. 14.1.1 지역 변수의 생명 주기 변수는 생물과 유사하게 생성되고 소멸되는 생명 주기가 있다. 변수에 생명주기가 없다면 한번 선언된 변수는
15.1 var 키워드로 선언한 변수의 문제점 ES5의 유일한 변수 선언 방법인 var 키워드는 다음과 같은 특징이 있어서 주의를 기울여 사용해야 한다. 15.1.1 변수 중복 선언 허용 15.1.2 함수 레벨 스코프 15.1.3 변수 호이스팅 15.2 let
16.1 내부 슬롯과 내부 메서드 먼저 내부 슬롯(internal slot)과 내부 메서드(internal method)에 대해 알아보자. 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티
17.1 Object 생성자 함수 17.2 생성자 함수 17.2.1 객체 리터럴에 의한 객체 생성 방식의 문제점 17.2.2 생성자 함수에 의한 객체 생성 방식의 장점 17.2.3 생성자 함수의 인스턴스 생성 과정 17.2.4 내부 메서드 [[Call]]과 [
다음과 같은 조건을 만족하는 객체를 일급 객체라 한다.무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다.변수나 자료구조(객체, 배열 등)에 저장할 수 있다.함수의 매개변수에 전달할 수 있다.함수의 반환값으로 사용할 수 있다.자바스크립트의 함수는 위의 조건
자바스크립트는 클래스 기반 객체지향 프로그래밍 언어보다 효율적이며 더 강력한 객체 지향 프로그래밍 능력을 지니고 있는 프로토타입 기반의 객체지향 프로그래밍 언어다. 클래스(class) E6S에서 클래스가 도입되었지만 새로운 객체지향 모델을 제공하는 것은 아니고
20.1 strict mode란? x 변수는 전역 스코프에도 선언이 존재하지 않기 때문에 ReferenceError를 발생시킬 것 같지만 자바스크립트 엔진은 암묵적으로 전역 객체에 x 프로퍼티를 동적 생성하여 전역 변수처럼 사용할 수 있다. 이러한 현상을 암묵적 전
21.1 자바스크립트 객체의 분류 자바스크립트 객체는 다음과 같이 크게 3개로 분류할 수 있다. 표준 빌트인 객체(standard built-in objects/native objects/global objects) ECMAScript 사양에 정의된 객체를 말하며
22.1 this 키워드 동작을 나타내는 메서드는 프로퍼티를 참조하고 변경할 수 있어야 한다. 이때 메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 먼저 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야한다. 객체 리터럴 방식으로 생성한 객체의 경우 메서드
25.1 클래스는 프로토타입의 문법적 설탕인가? > 문법적 설탕 : 요약 문법과 의미를 바꾸지 않으면서도 새로운 기능을 기존에 있는 기능으로 표현함으로써 언어에 추가하는 것 자바스크립트는 프로토타입 기반 객체지향 언어다. 그래서 자바스크립트는 클래스가 필요 없는 언