모던 자바스크립트 Deep Dive : 자바스크립트의 기본 개념과 동작 원리

모던 자바스크립트 Deep Dive : 자바스크립트의 기본 개념과 동작 원리

$50.07
Description
269개의 그림과 원리를 파헤치는 설명으로 ‘자바스크립트의 기본 개념과 동작 원리’를 이해하자!
웹페이지의 단순한 보조 기능을 처리하기 위한 제한적인 용도로 태어난 자바스크립트는 과도하다고 느껴질 만큼 친절한 프로그래밍 언어입니다. 이러한 자바스크립트의 특징은 편리한 경우도 있지만 내부 동작을 이해하기 어렵게 만들기도 합니다.

하지만 자바스크립트는 더 이상 제한적인 용도의 프로그래밍 언어가 아닙니다. 오랜 변화를 거쳐 이제 자바스크립트는 프런트엔드와 백엔드 영역의 프로그래밍 언어로 사용할 수 있는 명실상부한 범용 애플리케이션 개발 언어로 성장했습니다. 따라서 자바스크립트를 학습하는 방식도 이에 걸맞게 변화해야 하며, 이 책은 자바스크립트의 기본 개념과 동작 원리를 깊이 있게 학습하고자 하는 독자를 위해 기획되었습니다.

《모던 자바스크립트 Deep Dive》에서는 자바스크립트를 둘러싼 기본 개념을 정확하고 구체적으로 설명하고, 자바스크립트 코드의 동작 원리를 집요하게 파헤칩니다. 따라서 여러분이 작성한 코드가 컴퓨터 내부에서 어떻게 동작할 것인지 예측하고, 명확히 설명할 수 있도록 돕습니다. 또한 최신 자바스크립트 명세를 반영해 안정적이고 효율적인 코드를 작성할 수 있는 기본기를 다지고, 실전에서 쓰이는 모던 자바스크립트 프레임워크나 도구를 완벽하게 이해하고 활용할 수 있게 도와줍니다.

저자

이웅모

저자:이웅모
일본에서컴퓨터공학을전공한후일본의자동차연구소공용웹프레임워크개발프로젝트를시작으로프로그래밍세계에발을들여놓았다.이후외국계IT기업에서소프트웨어컨설턴트로재직하였고현재소프트웨어개발사의대표를맡고있다.프런트엔드튜토리얼poiemaweb.com의운영자이며패스트캠퍼스에서자바스크립트를강의중이다.지은책으로《AngularEssentials》(루비페이퍼,2018)가있다.

목차

▣01장:프로그래밍
1.1프로그래밍이란?
1.2프로그래밍언어
1.3구문과의미

▣02장:자바스크립트란?
2.1자바스크립트의탄생
2.2자바스크립트의표준화
2.3자바스크립트성장의역사
____2.3.1Ajax
____2.3.2jQuery
____2.3.3V8자바스크립트엔진
____2.3.4Node.js
____2.3.5SPA프레임워크
2.4자바스크립트와ECMAScript
2.5자바스크립트의특징
2.6ES6브라우저지원현황

▣03장:자바스크립트개발환경과실행방법
3.1자바스크립트실행환경
3.2웹브라우저
____3.2.1개발자도구
____3.2.2콘솔
____3.2.3브라우저에서자바스크립트실행
____3.2.4디버깅
3.3Node.js
____3.3.1Node.js와npm소개
____3.3.2Node.js설치
____3.3.3Node.jsREPL
3.4비주얼스튜디오코드
____3.4.1비주얼스튜디오코드설치
____3.4.2내장터미널
____3.4.3CodeRunner확장플러그인
____3.4.4LiveServer확장플러그인

▣04장:변수
4.1변수란무엇인가?왜필요한가?
4.2식별자
4.3변수선언
4.4변수선언의실행시점과변수호이스팅
4.5값의할당
4.6값의재할당
4.7식별자네이밍규칙

▣05장:표현식과문
5.1값
5.2리터럴
5.3표현식
5.4문
5.5세미콜론과세미콜론자동삽입기능
5.6표현식인문과표현식이아닌문

▣06장:데이터타입
6.1숫자타입
6.2문자열타입
6.3템플릿리터럴
____6.3.1멀티라인문자열
____6.3.2표현식삽입
6.4불리언타입
6.5undefined타입
6.6null타입
6.7심벌타입
6.8객체타입
6.9데이터타입의필요성
____6.9.1데이터타입에의한메모리공간의확보와참조
____6.9.2데이터타입에의한값의해석
6.10동적타이핑
____6.10.1동적타입언어와정적타입언어
____6.10.2동적타입언어와변수

▣07장:연산자
7.1산술연산자
____7.1.1이항산술연산자
____7.1.2단항산술연산자
____7.1.3문자열연결연산자
7.2할당연산자
7.3비교연산자
____7.3.1동등/일치비교연산자
____7.3.2대소관계비교연산자
7.4삼항조건연산자
7.5논리연산자
7.6쉼표연산자
7.7그룹연산자
7.8typeof연산자
7.9지수연산자
7.10그외의연산자
7.11연산자의부수효과
7.12연산자우선순위
7.13연산자결합순서

▣08장:제어문
8.1블록문
8.2조건문
____8.2.1if...else문
____8.2.2switch문
8.3반복문
____8.3.1for문
____8.3.2while문
____8.3.3do...while문
8.4break문
8.5continue문

▣09장:타입변환과단축평가
9.1타입변환이란?
9.2암묵적타입변환
____9.2.1문자열타입으로변환
____9.2.2숫자타입으로변환
____9.2.3불리언타입으로변환
9.3명시적타입변환
____9.3.1문자열타입으로변환
____9.3.2숫자타입으로변환
____9.3.3불리언타입으로변환
9.4단축평가
____9.4.1논리연산자를사용한단축평가
____9.4.2옵셔널체이닝연산자
____9.4.3null병합연산자

▣10장:객체리터럴
10.1객체란?
10.2객체리터럴에의한객체생성
10.3프로퍼티
10.4메서드
10.5프로퍼티접근
10.6프로퍼티값갱신
10.7프로퍼티동적생성
10.8프로퍼티삭제
10.9ES6에서추가된객체리터럴의확장기능
____10.9.1프로퍼티축약표현
____10.9.2계산된프로퍼티이름
____10.9.3메서드축약표현

▣11장:원시값과객체의비교
11.1원시값
____11.1.1변경불가능한값
____11.1.2문자열과불변성
____11.1.3값에의한전달
11.2객체
____11.2.1변경가능한값
____11.2.2참조에의한전달

▣12장:함수
12.1함수란?
12.2함수를사용하는이유
12.3함수리터럴
12.4함수정의
____12.4.1함수선언문
____12.4.2함수표현식
____12.4.3함수생성시점과함수호이스팅
____12.4.4Function생성자함수
____12.4.5화살표함수
12.5함수호출
____12.5.1매개변수와인수
____12.5.2인수확인
____12.5.3매개변수의최대개수
____12.5.4반환문
12.6참조에의한전달과외부상태의변경
12.7다양한함수의형태
____12.7.1즉시실행함수
____12.7.2재귀함수
____12.7.3중첩함수
____12.7.4콜백함수
____12.7.5순수함수와비순수함수

▣13장:스코프
13.1스코프란?
13.2스코프의종류
____13.2.1전역과전역스코프
____13.2.2지역과지역스코프
13.3스코프체인
____13.3.1스코프체인에의한변수검색
____13.3.2스코프체인에의한함수검색
13.4함수레벨스코프
13.5렉시컬스코프

▣14장:전역변수의문제점
14.1변수의생명주기
____14.1.1지역변수의생명주기
____14.1.2전역변수의생명주기
14.2전역변수의문제점
14.3전역변수의사용을억제하는방법
____14.3.1즉시실행함수
____14.3.2네임스페이스객체
____14.3.3모듈패턴
____14.3.4ES6모듈

▣15장:let,const키워드와블록레벨스코프
15.1var키워드로선언한변수의문제점
____15.1.1변수중복선언허용
____15.1.2함수레벨스코프
____15.1.3변수호이스팅
15.2let키워드
____15.2.1변수중복선언금지
____15.2.2블록레벨스코프
____15.2.3변수호이스팅
____15.2.4전역객체와let
15.3const키워드
____15.3.1선언과초기화
____15.3.2재할당금지
____15.3.3상수
____15.3.4const키워드와객체
15.4varvs.letvs.const

▣16장:프로퍼티어트리뷰트
16.1내부슬롯과내부메서드
16.2프로퍼티어트리뷰트와프로퍼티디스크립터객체
16.3데이터프로퍼티와접근자프로퍼티
____16.3.1데이터프로퍼티
____16.3.2접근자프로퍼티
16.4프로퍼티정의
16.5객체변경방지
____16.5.1객체확장금지
____16.5.2객체밀봉
____16.5.3객체동결
____16.5.4불변객체

▣17장:생성자함수에의한객체생성
17.1Object생성자함수
17.2생성자함수
____17.2.1객체리터럴에의한객체생성방식의문제점
____17.2.2생성자함수에의한객체생성방식의장점
____17.2.3생성자함수의인스턴스생성과정
____17.2.4내부메서드[[Call]]과[[Construct]]
____17.2.5constructor와non-constructor의구분
____17.2.6new연산자
____17.2.7new.target

▣18장:함수와일급객체
18.1일급객체
18.2함수객체의프로퍼티
____18.2.1arguments프로퍼티
____18.2.2caller프로퍼티
____18.2.3length프로퍼티
____18.2.4name프로퍼티
____18.2.5__proto__접근자프로퍼티
____18.2.6prototype프로퍼티

▣19장:프로토타입
19.1객체지향프로그래밍
19.2상속과프로토타입
19.3프로토타입객체
____19.3.1__proto__접근자프로퍼티
____19.3.2함수객체의prototype프로퍼티
____19.3.3프로토타입의constructor프로퍼티와생성자함수
19.4리터럴표기법에의해생성된객체의생성자함수와프로토타입
19.5프로토타입의생성시점
____19.5.1사용자정의생성자함수와프로토타입생성시점
____19.5.2빌트인생성자함수와프로토타입생성시점
19.6객체생성방식과프로토타입의결정
____19.6.1객체리터럴에의해생성된객체의프로토타입
____19.6.2Object생성자함수에의해생성된객체의프로토타입
____19.6.3생성자함수에의해생성된객체의프로토타입
19.7프로토타입체인
19.8오버라이딩과프로퍼티섀도잉
19.9프로토타입의교체
____19.9.1생성자함수에의한프로토타입의교체
____19.9.2인스턴스에의한프로토타입의교체
19.10instanceof연산자
19.11직접상속
____19.11.1Object.create에의한직접상속
____19.11.2객체리터럴내부에서__proto__에의한직접상속
19.12정적프로퍼티/메서드
19.13프로퍼티존재확인
____19.13.1in연산자
____19.13.2Object.prototype.hasOwnProperty메서드
19.14프로퍼티열거
____19.14.1for...in문
____19.14.2Object.keys/values/entries메서드

▣20장:strictmode
20.1strictmode란?
20.2strictmode의적용
20.3전역에strictm