- JavaScript
- 불변성
- 스코프
- 실행컨텍스트
- CI / CD
- Ajax, Axios, fetch
- XHR - Xml Http Request
- 호출 스케줄링
- 이벤트 흐름,이벤트 종류, 이벤트 위임
- Closure
- Map / Set
- documentFragment
목차
자바스크립트의 특징은 무엇이 있을까?
- 멀티 스레드가 아닌 싱글스레드 언어
- 정적 타이핑이 아닌 동적 타이핑을 사용하는 언어
- 컴파일러 언어가 아닌 인터프리터 언어
멀티 스레드가 아닌 싱글 스레드 언어
자바스크립트는 브라우저에서 동작하는 유일한 프로그래밍 언어다. 비록 자바스크립트는 싱글스레드이지만 브라우저는 멀티스레드를 지원한다. 그렇기에 싱글스레드 언어인 자바스크립트는 브라우저에서 제공하는 web api를 통해 멀티스레드를 구현할 수 있다.
정적 타이핑이 아닌 동적 타이핑을 사용하는 언어
- 정적타이핑 언어는 변수에 데이터를 할당 하기 위해서는 데이터의 타입을 명시해주어야한다.
- 동적 타이핑 언어인 자바스크립트는 변수에 데이터가 할당되는 순간 데이터의 타입이 정해진다.
- 동적 타이핑 언어인 자바스크립트는 변수에 어떤 데이터 타입의 값이라도 자유롭게 할당할 수 있고 편리하게 변경할 수 있다.
- 자바스크립트 엔진에 의해 암묵적으로 타입이 변환이 될 수 있다.
- 코드가 오염이 되어버리면 개발자가 개발 흐름을 읽기도 힘들어지며 디버깅을 하기도 어렵다.
코드가 오염이 되는 예시를 들어주세요
"1" + 1 // String -> "11" 문자열 타입으로 변환
1 * "1" // Number -> 1 숫자열 타입으로 변환
컴파일러 언어가 아닌 인터프리터 언어
컴파일러 언어는 코드가 실행되기 전 단계인 컴파일 타임에 소스코드 전체를 한번에 머신코드로 변환한 후에 실행한다. 반면 인터프리터 언어는 코드가 실행되는 단계인 런타임에 문 단위로 한 줄씩 바이트 코드로 변환한 후 실행을 한다. 컴파일러 언어는 초기에 소스코드 전체를 내려받기 때문에 초기 실행속도가 느리다는 단점이 있지만 그 이후로는 빠르게 동작한다는 장점이 있고 인터프리터 언어는 한 줄씩 바로바로 해석하여 실행한다는 점 때문에 초기 실행속도가 빠르지만 전체적으로 보았을 때 컴파일러 언어보다는 느리다는 단점이 있다.
자바스크립트는 인터프리터의 단점을 어떻게 해결하였는가?