JavaScript

찬비의 개발블로그·2021년 11월 2일
0

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에 작업이 있는지 확인
profile
혼자 공부하면서 정리하는 블로그

0개의 댓글