모든 시스템은 CPU를 포함한다. CPU는 마이크로프로세서라고도 불리우는데, 이는 전자적인 신호로 동작하는 작은 기계이다. 마이크로프로세서는 기본적으로 우리들이 지시한 명령들을 수행한다. 여기서 지시란 마이크로프로세서가 해석할 수 있는 언어로 되어 있는 것을 말한다. 사람들이 사용하는 언어와 기계들이 사용하는 언어는 당연히 다를 것이므로, 기계, 여기서는 마이크로프로세서가 알아들을 수 있는 언어로 지시를 해야 한다. 마이크로프로세서는 IA-32, x86-64, MIPS 그리고 ARM이라는 언어를 사용하는데, 이들을 사용해 직접 하드웨어와 소통한다. 이들을 우리는 기계어라고 부른다. 사람들이 내리는 지시는 컴파일되어 기계들이 알아들을 수 있는 언어로 변형된다. 언어가 고수준으로 발전할 수록 기계어에서 많은..
Language & Framework & Library
JavaScript의 여러가지 특징 중 가장 대표적인 3가지가 있다. 1. 비동기 2. 싱글스레드 3. 이벤트 루프 여기서 한가지 의문점이 든다. "JavaScript는 싱글스레드이면서 비동기일 수가 있을까?" 이에 대한 답은 JavaScript 언어는 싱글스레드이고 비동기 행위들은 JavaScript 언어의 일부는 아니며, 비동기 행위는 프로그래밍 환경(브라우저 내부)에 존재하는 JavaScript 언어 코어(Core) 상위에 만들어져 있어 브라우저의 API를 통해 접근한다. 브라우저 내부 - 중요 컴포넌트 Heap 영역 - 객체는 대규모이면서 구조화 되지 않은 메모리 영역인 힙영역 내부에 할당된다. Stack 영역 - JavaScript 코드 실행을 위해 제공된 싱글 스레드를 나타낸다. Web API..
IIFE(Immediately-invoked Function Expression): 변수를 전역으로 선언하는 것을 피해 외부와의 충돌을 방지하기 위하여, 즉시 호출 함수 표현식의 줄임말이다. 위에 두가지 문체로 나타낸 코드는 IIFE 방식으로 작동하는 코드이다. IIFE가 어떻게 동작하는지 알기 전에, 선행되어야 할 몇가지 부분들을 몇가지가 존재한다. 1. 함수 선언식 2. 함수 표현식 3. 익명 함수 표현식 4. Named 함수 표현식 함수 선언식 - 함수 선언식이라고 보통 불리운다. 영어로는 "a function definition" 또는 "a function declaration" 이라고 한다. - 함수 선언식은 항상 function 키워드로 시작하고, 그 뒤에 함수의 이름이 따라온다. - 함수의 ..
먼저 코드를 보자. 예측할 수 있는 시나리오는 다음과 같다. - findUser 함수는 아이디가 0보다 크면 성공메시지를 출력, 아니면 실패 메세지를 출력 -> if-else 문을 빠져나온 후, 실패 메세지를 다시 한번 출력 하지만 findUser(1)로 함수를 호출하게 되면 어떻게 출력이 될까? 다음 코드와 같이 오류가 발생하지 않고, undefined가 출력이 된다. 어떻게 이런 결과가 나오는 것일까? 이런 상황을 만들어 내는 호이스팅(Hoisting)에 대해서 알아보자. var의 Function Scope와 Variable Hoisting 호이스팅(Hoisting)이란? - 해당 변수(var)가 속한 범위(scope) 최상단으로 올려버리는 현상 - 범위(scope)는 다른 언어처럼 block레벨이 ..