Frontend/JavaScript

    함수 호이스팅

    함수 호이스팅

    💡 함수 선언문 : 선언문 이전에 호출 가능, 함수 호이스팅, 함수 객체 초기화 💡 함수 표현식 : 표현식 이전에 호출 불가능, 변수 호이스팅, undefined 초기화 함수 생성 시점과 함수 호이스팅 함수 선언문 function add(x, y) { return x + y; } 함수 객체로 초기화 함수 정의 → 런타임 이전 함수 객체가 먼저 실행 (자바스크립트 엔진은 함수 이름과 동일한 이름의 식별자를 암묵적으로 생성, 생성된 함수 객체를 할당) 선언문 이전에 호출하면 함수 호이스팅에 의해 호출이 가능 함수 표현식 var sub = function add(x, y) { return x + y; } undefined로 초기화 변수 선언은 런타임 이전에 실행되어 undefined로 초기화 변수 할당문의 값..

    호이스팅(hoisting)

    호이스팅(hoisting)

    💡호이스팅 - JavaScript 엔진이 코드를 실행하기 전에 변수 및 함수 선언을 메모리에 끌어올리는 것 호이스팅 변수와 함수 선언이 최상단으로 올려지는 현상 console.log(a); func(); function func() { console.log('함수실행'); } var a = '변수'; 위 경우, 함수실행은 제대로 작동하고, 변수는 초기화가 아직 되지 않은 값이라 undefined가 출력된다. 다시 말해, JavaScript 엔진이 코드를 실행하기 전에 변수 및 함수 선언을 메모리에 끌어올리는 것이다. 즉, 코드 실행 이전에 선언된 변수와 함수가 메모리에 할당되어 그들의 스코프 내에서 어디에서든지 접근할 수 있다. console.log(x); // undefined var x = 5; co..

    var, let, const 차이

    var, let, const 차이

    💡변수 선언 방식var    - 변수 선언, 함수 스코프, 리터럴 값의 재할당이 가능, 변수재선언 가능, 호이스팅 됨let     - 변수 선언, 블록 스코프, 리터럴 값의 재할당이 가능, 변수재선언 불가능const - 상수 선언, 블록 스코프, 리터럴 값의 재할당이 불가능, 변수재선언 불가능💡호이스팅에 연관지어 설명var는 선언단계와 초기화 단계가 한 번에 진행된다. 변수 호이스팅에 의해 선언문 이전에 접근이 가능하고 런타임 이전에 자바스크립트 엔진에 의해 undefined 값으로 초기화된다. let은 선언단계와 초기화 단계가 분리되어 진행된다. 선언문 이전에 접근하면 일시적 사각지대(TDZ)가 존재해 호이스팅은 되지만 참조에러가 발생해 호이스팅이 되지 않는 것처럼 동작한다. const는 선언과 동..