호이스팅

  • 사전적 의미는 '끌어올리다'
  • 변수 '선언'과 함수 '선언'을 끌어올린다.
  • 자바스크립트는 코드를 실행하기 전에 코드 전체에 선언된 내용이 있는지 살펴보고 발견하면 위로 끌어올린다.
  • 선언과 할당이 동시에 이루어지는 경우에는 할당 영역은 그대로두고 선언만 위로 끌어올린다.

'Javascript > JS Flow' 카테고리의 다른 글

2-5 Callback  (0) 2020.01.27
2-4. Method  (0) 2020.01.27
1-1. 데이터 타입  (0) 2020.01.26
2-3. 함수 스코프와 실행 컨텍스트  (0) 2020.01.26
2-2. 함수 선언문과 함수 표현식  (0) 2020.01.26

기본형과 참조형의 종류 및 차이점

  • Primitive Type(기본형)

    • Number
    • String
    • Boolean
    • Null
    • undefined
  • Reference Type(참조형)

    • Object
      • Array
      • Function
      • RegExp
  • 기본형은 값을 그대로 할당한다.

    • 변수가 선언되면 데이터가 저장될 공간을 확보하고, 확보한 공간의 주소값을 가지고 변수명과 매치시킨다. 다시 매칭된 주소로 이동하여 문자열(값)을 저장한다.
  • 참조형은 값이 저장된 주사값을 할당(참조)한다.

    • 참조형 데이터는 프로퍼티와 데이터(키와 밸류)로 묶인 쌍들로 이루어져있다.
    • 기본형과 다르게 데이터가 저장될 공간을 값을 하나하나 쪼개어 저장한다.(기본형 데이터의 집합이다.)

'Javascript > JS Flow' 카테고리의 다른 글

2-5 Callback  (0) 2020.01.27
2-4. Method  (0) 2020.01.27
2-1. 호이스팅  (0) 2020.01.26
2-3. 함수 스코프와 실행 컨텍스트  (0) 2020.01.26
2-2. 함수 선언문과 함수 표현식  (0) 2020.01.26

함수 스코프와 실행컨텍스트

  • 스코프 : 유효범위(변수)
    • 함수가 정의될 때 결정된다.
  • 실행 컨텍스트 : 실행되는 코드덩어리(추상적 개념)
    • 함수가 실행될 때 생성된다.
    • 호이스팅이 이루어진 후의 함수 본문 내용, this 바인딩 등의 정보가 담긴다.
    • 사용자가 함수를 호출했을때 외부적으로 해당 함수를 실행하기 위해 필요한 정보들을 불러 모아놓은 하나의 집합체
var a = 1;

function outer(){  
console.log(a); // 1

  function inner(){
      console.log(a); // undefined, inner 내부의 a가 호이스팅되었지만 '3'이라는 값이 할당되기 전이므로 undefined이다.
      var a = 3;
  }

  inner();
  console.log(a); // 1

}  
outer();  
console.log(a); // 1  

'Javascript > JS Flow' 카테고리의 다른 글

2-5 Callback  (0) 2020.01.27
2-4. Method  (0) 2020.01.27
2-1. 호이스팅  (0) 2020.01.26
1-1. 데이터 타입  (0) 2020.01.26
2-2. 함수 선언문과 함수 표현식  (0) 2020.01.26

함수선언문과 함수표현식

  • 함수선언문
    function a(){
      return 'a';
    }
  • 기명 함수표현식
    var b = function bb(){
      return 'bb';
    }
  • (익명) 함수표현식
    var c = function(){
      return 'c';
    }
  • 브라우저들이 업데이트되면서 기명 함수표현식을 사용하는 이점이 사라져서 거의 사용하지 않는다.
  • 익명 함수표현식의 선언되고 정의되는 과정
    • 변수 c 선언
    • 익명함수 선언
    • 변수 c에 익명함수를 할당
  • 선언한 함수를 변수에 할당한다 => 함수표현식
  • 함수선언문과 함수표현식의 차이는 '할당' 여부
  • 할당을 하지 않으면 전체가 호이스팅의 대상이되고 할당을 하는 경우 함수를 그 자리에 남아있고 변수만 호이스팅된다.
  • 함수선언문보다 함수표현식 사용을 권장한다. 안전하고 예측 가능한 코드가 되기 때문.

'Javascript > JS Flow' 카테고리의 다른 글

2-5 Callback  (0) 2020.01.27
2-4. Method  (0) 2020.01.27
2-1. 호이스팅  (0) 2020.01.26
1-1. 데이터 타입  (0) 2020.01.26
2-3. 함수 스코프와 실행 컨텍스트  (0) 2020.01.26

+ Recent posts