호이스팅(Hoisting) 스코프 안에 있는 선언들을 모두 스코프의 최상위로 끌어올리는 것이다. 선언문들을 미리 실행하는 것이라 생각하면 된다. 실제 메모리에서는 변화가 없다. var 키워드나 함수 선언문 같은 경우는 코드 실행 전 자바스크립트 내부에서 미리 변수를 선언하고 undefined로 초기화를 해놓는다. let 키워드, const 키워드와 함수 표현식도 호이스팅이 발생하긴 하나 변수를 선언만 해놓을 뿐 초기화하지 않는다. 초기화는 변수 선언문을 만났을 때 수행한다. 이때 선언과 초기화 사이에 일시적으로 변수 값을 참조할 수 없는 구간을 Temporal Dead Zone(TDZ)이라 한다. 예제 1 console.log(typeof(funcHello)); console.log(typeof(func..
JavaScript (JS) ECMAScript 브라우저에서 사용되는 JS 같은 것들은 모두 ECMAScript를 토대로 한다. 옛날 JS는 브라우저마다 함수와 기능이 달랐었다. 그래서 ECMAScript 명세에 맞추어 만들기로 하였고, 이게 표준이 되었다. use strict 모드 자바스크립트의 장점은 자유롭다는 거지만 이게 단점으로 적용하여 디버깅하기가 힘들 수 있다. use strict 모드를 사용하면 문법 검사를 브라우저 자체에서 타이트하게 해 준다. JavaScript 자료형 Boolean 타입 논리 요소를 나타낸다. true와 false 두 가지 값이 존재한다. Null 타입 null 하나의 값만을 가질 수 있다. Undefined 타입 값을 할당하지 않은 변수가 가지는 타입이다. Null 타..