데브코스 10일차 ( 24.10.25 금 ) JavaScript

워니·2024년 10월 31일
0

Programmers Front-end

목록 보기
10/27

[Section 01] JavaScript 기초


< 07. 호이스팅 >

  • 선언과 할당으로 구문을 분리하여, 선언 부분을 최상위로 끌어올려서 실행하는 특징
  • 함수 선언문은 호이스팅이 적용됨
  • 함수 선언문은 따로 할당이 없기 때문에, 선언문을 최상위로 올려서 인식함
  • let, const 는 호이스팅이 되지 않음
ex 1)
print();
function print() {
  console.log("a");
}
ex 2)
function print() {
  console.log("a");
}
print();                             // ex 1과 ex 2는 같음
  • 예시
    1. 변수가 선언되기도 전에 참조하여 출력하고 있지만,
      error가 발생하지 않음

      console.log(num); //undefined
      var num = 10;
      
    • var는 기록해두고, 실행하기 전에 undefined 값을 넣어둔다.
    1. var가 아닌 let, const 키워드로 변수 생성 시, 참조 오류 발생

      //Uncaught ReferenceError: num is not defined
      console.log(num);
      let num = 10;
      
    • let, const는 undefined라 할지라도 정확한 값을 넣어줘야 접근 가능
    1. printName() 함수가 선언도 되기 전에 호출하고 있으나,
      잘 호출됨

      printName();           // 윤희
      function printName(){
        console.log('윤희');
      }
    2. 함수 선언식은 is not a function 오류

      printName();            // printName is not a function
      var printName = () => {
          console.log("윤희");
      };
    3. let, const 키워드로 선언 시 참조 오류

      //Uncaught ReferenceError: printName is not defined
      printName(); 
      let printName = function(){
        console.log('윤희');
      }
  • 연습문제
    1. 변수 호이스팅
    • 다음 코드의 실행 결과를 예측하시오.

      console.log(myVar); 
      var myVar = 10;
      console.log(myVar); 
    1. 변수와 함수 동시 선언
    • 다음 코드의 실행 결과를 예측하시오.

      var num = 5;
      console.log(num); //
      
      function num() {
        return 10;
      }
      
      console.log(num); //
      console.log(num()); //
    1. 변수 재할당
    • 다음 코드의 실행 결과를 예측하시오.

      var x = 10;
      function test() {
        console.log(x); //
        var x = 5;
        console.log(x); // 
      }
      test();
      console.log(x); // 

< 08. 컨텍스트 >

1. 실행 컨텍스트

  • 자바스크립트 코드가 실행되기 위해서 필요한 환경을 제공하는 객체
  • 여기서 환경이란, 코드 실행에 영향을 주는 조건이나 상태
  • 레코드 (record)아우터 (outer)로 구성되어져 있음
  • 레코드 (record)
    : 환경 레코드를 말하며, 자바스크립트 코드의 선언문을 기록해두는 공간
  • 아우터 (outer)
    : 바깥 스코프를 참조하는 객체, 아우터를 통해 외부에 있는 식별자 참조 가능
  • 후입 선출 (Last In First Out, LIFO)
    : 스택에 나중에 들어간 것부터 실행하고 제거함

1.1. 전역 실행 컨텍스트

  • 코드가 실행될 때 최소 1개의 전역 실행 컨텍스트를 가진다.

1.2. 함수 실행 컨텍스트


2. 생성과 실행 (2 단계)

2.1. 생성

  • 실행할 코드를 전부 훑어 봄, 선언된 부분을 기록해 둠
  • 메모리 공간을 미리 만들어 놓기 위해 선언 부분을 record에 기록

2.2. 실행

  • 생성 단계에서 기록해 둔 선언 부분을 참고해서 실행
profile
첫 시작!

0개의 댓글