[엘리스 SW트랙 4기] 2주차 - Day6 - Javascript 프리트랙 복습

랸나·2023년 3월 6일
1
오늘은 프리트랙에서 배웠던 내용들을 복습하고 문제를 풀었다. 빨리 끝났기 때문에 모던자바스크립트 Deep Dive + 프로그래머스 0단계 처음부터 풀기 위주로 공부했다.

변수

  • 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름, 즉 값의 위치를 가리키는 상징적인 이름임.
  • 변수 이름을 '식별자'라고도 하는데, 식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말함.
  • 식별자는 값이 아닌 메모리 주소를 기억함.
  • 식별자는 변수 뿐만 아니라 함수, 클래스 등의 이름을 모두 식별자라고 함.
  • var 는 블록레벨 스코프가 아닌 함수 레벨 스코프를 지원하기 때문에 심각한 오류를 발생시킬 수 있음.
  • 선언단계 : 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알림
  • 초기화 단계 : 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화함.
  • 선언하지 않은 식별자를 참조하면 ReferenceError(참조에러) 발생함

호이스팅

  • 변수 선언이 소스코드가 한 줄씩 순차적으로 실행되는 시점, 즉 런타임이 아니라 그 이전 단계에서 먼저 실행됨.
  • 자바스크립트 엔진은 변수 선언이 소스코드의 어디있든 상관없이 다른 코드보다 먼저 실행함.
  • 변수 선언문이 선두로 끌어 올려진 것처럼 동작하는 자바스크림트 고유의 특징이 변수 호이스팅임. ( var, let, const, function, function*, class 모두)

변수 / 상수

  • var : 값 재할당 가능 > 변수
  • const : 값 재할당 불가능 > 상수
  • 값을 재할당할 수 없어서 변수에 저장된 값을 변경할 수 없다면 변수가 아니라 상수임.
  • 변수에 값을 재할당하면 이전에 저장되어있던 메로리 공간을 지우고 그 메모리 공간에 재할당하는 것이 아니라, 새로운 메모리 공간을 확보하고 그 메모리 공간에 숫자 값을 저장하는 것임.
  • [가비지 콜렉터] : 애플리케이션이 할당한 메모리 공간을 주기적으로 검사하여 더 이상 사용되지 않는 메모리를 해제하는 기능을 말함. 자바스크립트는 가비지 콜렉터를 내장하고 있는 매니지드 언어로서 가비지 콜렉터를 통해 메모리 누수를 방지함.
  • 매니지드언어 vs 언매니지드언어 (메모리 관리 방식에 따라)
    • 언매니지드 언어
      • c언어 - 개발자가 명시적으로 메모리를 할당하고 해제하기 위해 malloc()과 free()같은 저수준 메모리 제어 기능을 제공.
      • 메모리 제어를 개발자가 주도할 수 있으므로 개발자의 역량에 따라 최적의 성능을 확보할 수 있지만 그 반대의 경우 치명적 오류를 생산할 가능성도 있음.
    • 매니지드 언어 :
      • 자바스크립트 - 개발자의 직접적인 메모리 제어를 허용하지 않으며, 개발자가 명시적으로 메모리를 할당하고 해제할 수 없음. > 가비지컬렉터가 그 역할을 함.
      • 개발자의 역량에 의존하는 부분이 상대적으로 작아져 어느 정도 일정한 생산성 확보 가능, 그러나 성능 명에서 어느정도 손실은 감수.

함수 레벨 스코프 / 블록 레벨 스코프

  • 함수레벨 스코프 > 추후 자세하게 살펴보기!
  • 블록레벨 스코프 > 추후 자세하게 살펴보기!

값, 리터럴, 표현식

  • 값 : 표현식이 평가되어 생성된 결과, 변수에 할당되는 것이 값.
  • 리터럴 : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법
3 //숫자 리터럴
  • 표현식 : 값으로 평가될 수 있는 문. 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조함.
var score = 100;
profile
백엔드개발자

0개의 댓글