# 선언(declaration)과 정의(definition)
자바스크립트의 undefined란 변수에 값이 할당되지 않은 상태를 뜻한다.
다른 프로그래밍 언어에서는 선언과 정의를 엄격하게 구분해서 사용하는 경우가 있다. 예를 들어, C에서 선언과 정의는 "실제로 메모리 주소를 할당하는가"로 구분한다. 단순히 컴파일러에게 식별자의 존재만 알래는 것은 선언이고, 실제로 컴파일러가 변수를 생성해서 식별자와 메모리 주소가 연결되면 정의로 구분한다. 자바스크립트의 경우 변수를 선언하면 암묵적으로 정의가 이뤄지기 때문에 선언과 정의의 구분이 모호하다. (var로 선언된 변수는 JS 엔진이 undefined로 초기화하기 때문이다.)
ECMAScript에서 변수는 '선언한다'라고 표현하고, 함수는 '정의한다'라고 표현한다.