Java와 JavaScript 차이
- Java : 객체지향 프로그래밍 언어로 시스템 개발, 안드로이드용 어플리케이션 개발에 사용
- JavaScript : 사용자와 웹사이트가 상호작용하는데 도움을 주는 스크립트 언어. 사용자가 어떠한 액션을 취했을 때 다른 페이지 열지 않고 변화된 결과를 즉각적으로 보여줌. 페이지의 동적 제어
- node.js를 통해 서버상에서도 javascript 사용할 수 있게 됨. 컴파일 필요없고 바로 실행
자바스크립트의 타입
- 자바스크립트의 Number Type은 다른 언어들과 차이점
- 다른언어에는 int double 등 숫자타입의 다양함이 있지만, number는 하나만 있다. 정수만을 위한 타입이 없고, 모든 수를 실수로 처리한다.
- 자바스크립트의 원시 타입
- boolean, string, number, undefined, null, symbol 총 6가지
- undefined는 선언만 되어 있고 값은 없는 상태, null은 자료형이 객체이며 빈값을 의미
실행 컨텍스트(Execution Context)
- 자바스크립트의 코드들이 실행되기 위한 환경
- 전역 컨텍스트, 함수 컨텍스트 2가지 존재
- 전역 컨텍스트 하나 생성 후에 함수 호출할 때마다 함수 컨텍스트가 생성
- 컨텍스트를 생성시에 변수객체, 스코프 체인, this가 생성
- 컨텍스트 생성 후 함수가 실행되는데 사용되는 변수들은 변수 객체 안에서 값을 찾고 없다면 스코프테인을 따라 올라가며 찾음
- 함수 실행이 마무리되면 해당 컨텍스트는 사라짐
- 페이지가 종료되면 전역 컨텍스트가 사라짐
- 즉, 자바스크립트이 코드가 실행되기 위해서는 변수객체, 스코프테인, this 정보들을 담고 있는 곳을 실행컨텍스트라고 부른다
자바스크립트의 호이스팅(Hoisting)
- 변수를 선언하고 초기화 했을때 선언부분이 최상단으로 끌어올려지는 현상
- 예를 들어, 코드 상단에서 console.og(a)를 찍고 하단에서 var a=1; 이라고 했을 때 a는 undefined라고 나온다. 이런 형상을 호이스팅
- 함수의 경우 함수표현식은 호이스팅이 적용되지 않으나 일반 함수선언문은 함수 호이스팅이 적용된다.
클로저(Closure)
- 반환된 내부함수가 자신이 선언됐을 때의 환경인 스코프를 기억하며 자신이 선언되었을때의 환경 밖에서 호출되어도 그 환경에 접근할 수 있는 함수, 자신이 생성될때의 환경을 기억하는 함수
- 사용하는 이유
- 현재 상태를 기억하고 변경된 최신 상태를 유지하기 위해
- 전역 변수의 사용을 억제 하기위해
- 정보를 은닉하기 위해
이벤트 루프
- 자바스크립트는 싱글 스레드 기반 언어
- 함수를 실행하면 함수 호출이 스택에 순차적으로 쌓이고 스택의 맨위에서부터 아래로 한번에 하나의 함수 처리
- 하지만, 자바스크립트에는 이벤트 루프를 통해 동시성을 지원(동시에 일어나기X, 동시인것처럼 보임)
- 이벤트 루프는 콜 스택에서 실행 중인 게 있는지 확인하고, Event queue에 작업이 있는지 확인