자바스크립트를 제대로 공부하려면 꼭 봐야한다는 자바스크립트 딥다이브..
두께가 어마어마해서 스터디를 구해 들어갔지만 스터디장이 날랐다.
그치 인생은 마이웨이니까 일단 시작!
1장 프로그래밍
프로그래밍이란?
컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션
0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업이며,
그 결과물은 코드
문제 해결 방안을 고려할 때 컴퓨터의 입장에서 문제를 바라봐야 한다. (컴퓨팅 사고)
예) 사람: 소리를 키워라 > 컴퓨터: 소리를 60으로 키워라
프로그래밍 언어
- 컴퓨터가 쓰는 말(기계어)는 너무 어렵다. 그래서 사람이 이해할 수 있도록 번역기(컴파일러 or 인터프리터)를 돌려서 보여주는 것.
- 구문과 의미의 조합으로 표현된다.
구문과 의미
- 작성된 코드는 해결 방안의 구체적 구현물.
- 요구사항이 실현(문제가 해결)되어야 의미가 있음.
- 프로그래밍은 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것.
2장 자바스크립트란?
자바스크립트 성장의 역사
1. Ajax
- 서버와 브라우저가 비동기방식으로 데이터를 교환할 수 있는 통신 기능인 Ajax가 XMLHttpRequst이름으로 등장
- 이전에는 완전한 HTML 코드를 서버로부터 전송받아 웹페이지 전체를 렌더링하는 방식으로 동작했다.
이 방식은 불필요한 데이터 통신이 발생하고 성능면에서 불리함.
- Ajax의 등장으로 웹페이지에서 변경할 필요가 없는 부분은 렌더링하지 않고 변경해야 하는 부분만 렌더링 함.
2. jQuery
- DOM을 더욱 쉽게 제어할 수 있게 되었음.
3. V8 자바스크립트 엔진
- 데스크톱 애플리케이션과 유사한 사용자경험을 제공할 수 있는 웹 애플리케이션 프로그래밍 언어로 정착
4. Node.js
- 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경
- 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 자바스크립트 실행 환경.
- 서버 사이드 애플리케이션 개발에 주로 사용
- 비동기 I/O를 지원하며 단일 스레드 이벤트 루프 기반으로 동작함으로써 요청 처리 성능이 좋음.
5. SPA 프레임워크
- 이전의 개발방식으로는 복잡해진 개발 과정을 수행하기 어려워졌거 많은 패턴과 라이브러리가 출현
- Angular, React, Vue.js, 등
자바스크립트와 ECMAScript
ECMAScript는 자바스크립트의 표준 사양인 ECMA-262를 말하며, 프로그래밍 언어의 값, 타입, 객체와 프로퍼티 등 핵심 문법을 규정
자바스크립트는 일반적으로 프로그래밍 언어로서 기본 뼈대를 이루는 ECMAScript와 브라우저가 별도 지원하는 클라이언트 사이드 Web API, 즉 DOM, BOM, Canvas, XMLHttpRequest, fetch, SVG 등을 아우르는 개념
자바스크립트의 특징
- 웹 브라우저에서 동작하는 유일한 프로그래밍 언어
- 자바스크립트는 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어
컴파일러 언어 | 인터프리터 언어 |
코드가 실행되기 전 단계인 컴파일 타임에 소스코드 전체를 한번에 머신 코드(CPU가 바로 실행할 수 있는 기계어)로 변환 후 실행 | 코드가 실행되는 단곙니 런타임에 문 단위로 한 줄씩 중간코드인 바이트코드(가상 머신에서 실행하도록 만든 바이너리 코드)로 변환한 후 실행 |
실행 파일을 생성 | 실행 파일을 생성하지 않음 |
컴파일 단계와 실행 단계가 분리되어 있음. 명시적인 컴파일 단계를 거치고, 명시적으로 실행 파일을 실행 |
인터프리트 단계와 실행 단계가 분리되어 있지 않음. 인터프리터는 한 줄씩 바이트코드로 변환하고 즉시 실행 |
실행에 앞서 컴파일은 단 한번 수행됨. | 코드가 실행될 때마다 인터프리트 과정이 반복 수행 |
컴파일과 실행 단계가 분리되어 있으므로 코드 실행 속도가 빠름. | 인터프리트 단계와 실행 단계가 분리되어 있지 않고 반복 수행되므로 코드 실행 속도가 비교적 느림. |
'언어 > JavaScript' 카테고리의 다른 글
[자바스크립트 딥다이브] 5장 표현식과 문, 6장 데이터 타입 (1) | 2024.03.29 |
---|---|
[자바스크립트 딥다이브] 4장 변수 (0) | 2024.03.26 |
indexOf, includes, 배열, splice, slice, find, filter, map, join, reduce, 전개구문 (1) | 2023.11.04 |
생성자 함수, 계산된 프로퍼티, 객체 메소드, 심볼 (1) | 2023.11.04 |
[udemy] 유데미 javascript 강의 후기 (1) | 2023.09.07 |