TODO
js심화노드입문
Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임.
Node.js란 Javascript를 브라우저가 아닌 컴퓨터에서 브라우저 없이 실행하게 도와주는 환경을 의미.
Node.js를 굳이 사용해야 하는 이유가 있을까요?
Node.js는 논 블로킹(Non-blocking) I/O, 싱글 스레드(Single Thread), 이벤트 루프(Event Loop)의 특성이 있습니다.
기존의 블로킹(Blocking) I/O는 프로그램 내부에서 함수를 호출하면 호출된 함수가 작업을 마칠 때까지 대기하는 방식이었지만, 논 블로킹(Non-blocking) I/O
는 함수가 실행되는 중에도 다른 작업을 동시에 진행할 수 있는 장점이 있습니다.
싱글 스레드(Single Thread)
는 스레드 하나를 사용하는 것이며, 동시에 하나의 작업만을 처리할 수 있습니다.
→ 여기서 스레드(Thread)란 프로그램이 동작할 때, CPU 또는 프로세서를 사용하는 단위입니다.
일반적으로 1개의 프로그램은 1개의 스레드를 사용할 수 있습니다. 하지만 1개의 프로그램에서 여러개의 스레드를 사용할 수 있다면 연산할 수 있는 시간을 단축 시킬 수 있겠죠?
(Node.js는 차라리 새로운 프로세스를 생성해 확장을 도모합니다. 프로세스는 여러개라도 서로에 대해 스레드에 비해 독립적이므로 하나의 프로세스가 문제를 일으키더라도 다른 프로세스까지 모두 종료될 확률은 상대적으로 낮습니다.
이러한 특징때문에 연결 요청의 부하에 따른 서버 확장이 매우 자유롭습니다. 즉, Node.js는 특히 웹 서버에 특화된 철학이 녹아있는 언어입니다.)
이벤트 루프(Event Loop)
는 Javascript가 가지고 있던 싱글 스레드의 약점을 극복하기 위해 효율적으로 작업을 처리할 수 있는 특성입니다.
javascript
는 넷스케이프
라는 웹브라우저에서 사용하기 위해 만들어진 언어입니다. 옛날 홈페이지들은 html과 css로 움직이지 않는 아주 정적인 홈페이지들만 있었어요. 여기에서 Javascript
를 추가해서 홈페이지에서 역동적인 애니메이션이나 움직임등을 추가할 수 있었어요.넷스케이프
외에도 저희에게 익숙한 Internet Explorer
같은 다른 브라우저들도 비슷한 언어를 개발하기 시작했어요. 그러다보니 브라우저마다 개발하는 방식이 달랐고 이게 불편해서 표준화 시키는 작업이 필요했습니다. 그렇게 나온 것이 ECMAScript
입니다.ECMAScript
는 매년 꾸준히 변경되고 새로운 기능이 추가되면서 버전이 새로 나오고 있어요. 2021년 기준으로 12번째 버전이 나왔네요.ES6
란 ECMAScript의 6번째 버전
으로 2015
년에 발표되어서 ECMAScript 2015
라고도 불립니다. (ES6, ECMAScript 2015 둘다 같은 말이에요)입력 받은 코드를 읽어(Read)들여 메모리에 저장하고, 평가(Evaluate)된 값을 출력(Print)합니다.
특정 신호를 입력받기 전까지 위의 과정을 반복(Loop)합니다.
모든 data는 byte단위의 식별자인 메모리 주소값을 통해서 서로 구분이 된다.
기본형과 참조형의 구분 기준
i. 복제의 방식
ii. 불변의 여부
: 기본형은 불변성이 있다.
memory 저장 단위
주소(address)
컴퓨터라는 하드웨어를 관리하는 운영체제는 많은 양의 메모리를 관리하기 위해 1byte크기로 숫자를 매겨서 관리하는데 이것을 주소라고함.
식별자, 변수
데이터는 변수영역과 데이터영역으로 나뉘어 저장된다.
값을 바로 변수에 대입하지 않는 이유(=무조건 새로 만드는 이유)