호이스팅

실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 1 소스코드의 타입ECMAScript 사양은 소스코드를 4가지 타입으로 구분한다.소스 코드의 타입설명전역 코드전역에 존재하는 소스 코드이며 전역에 정의된 함수, 클래스 등의 내부 코드는 포함되지 않는다.함수 코드함수 내부에 존재하는 소스 코드를 말하며 함수 내부에 중첩된 함수, 클래스 등의 내부 코드는 포함되지 않는다.eval 코드빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드를 말한다.모듈 코드모듈 내부에 존재하는 소스코드를 말하며 모듈 내부의 함수, 클래스 등의 내부 코드는 포함되지 않는다. 소스 코드를 4가지 타입으로 구분하는 이유는 소스코드의 타입에 따라 실행 컨택스트를 생성하는 과정과 관리 내용이 다르기 ..
4.1 변수란 무엇인가? 왜 필요한가? 10 + 20 위의 코드를 자바스크립트 엔진이 계산하려면 먼저 10, 20, + 라는 기호(리터럴과 연산자)의 의미를 알고 있어야 하며, 10 + 20 이라는 표현식의 의미도 해석(파싱)할 수 있어야 한다. 자바스크립트가 위의 식을 해석하는 순서는 + 연산을 수행하기 위해 + 연산자의 좌변과 우변의 숫자 값, 즉 피연산자를 기억한다. 컴퓨터는 cpu를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다. 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체다. 메모리 셀 하나의 크기는 1바이트(8비트)이며, 컴퓨터는 메모리 셀의 크기(1바이트 단위)로 데이터를 저장하거나 읽어 들이다. 각 셀은 고유의 메모리 주소를 갖는다. 이 메모리 주소는 0부터 시작해 메모리의 ..
호이스팅 이 개념은 선수지식으로 스코프를 알고 있어야 된다. 호이스팅이란? "끌어올린다" 라는 뜻으로 변수 및 함수 선언문이 스코프 내의 최상단으로 끌어욜려지는 현상을 말한다. 즉, 선언문이 어디에서 선언됐든 속하는 스코프 전체에서 존재하는 것처럼 취급되는 작용을 말한다. 주의할 점은 "선언문" 이며, "대입문"은 끌어올려지지 않는다. console.log(a); var a = 2; 컴파일러는 JS엔진이 *인터프리팅(Interpreting)을 하기 전에 컴파일을 하는데 이때, var a = 2; 를 2개의 구문으로 본다. * = 인터프리팅은 기계어를 기계어를 다른 언어로 번역할 필요 없이 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경 var a a = 2 var a 는 변수 선언..
호이스팅 정의 : 변수와 함수 선언문을 선언된 위치에서 코드의 꼭대기로 올리는 동작 호이스팅을 동작을 한번 코드를 보며 확인해보자. a = 2; var a; console.log(a); 위의 코드에서 var a 라는 변수 선언문이 있다. JS엔진은 코드를 인터프리팅 하기 전에 컴파일한다.(중요) 컴파일레이션 단계 중 모든 선언문을 찾아 적절한 스코프에 연결해주는 것이 렉시털 스코프의 핵심이다. 고로 위의 코드에서는 아래와 같은 구문으로 나누어진다. var a; a = 2; 첫번째 구문은 선언문으로 컴파일레이션 단계에서 처리되며, 두번째 구문은 대입문으로 실행 단계 까지 방치된다. 고로 코드는 다음과 같이 처리된다. var a; a = 2; console.log(a); 선언문만 끌어올리고 다른 대입문이나 ..
58청춘
'호이스팅' 태그의 글 목록