JavaScript의 변수와 선언
자바스크립트의 변수
자바스크립트의 변수는 데이터의 보관함 같은 것이며
커피를 주문할 때에 커피의 사전적 의미인 끓여서 마실 수 있도록 볶아 놓은 커피나무 열매의 씨앗, 또는 그것을 빻은 분말 상태의 물질로 그 씨를 끓이거나 분말을 뜨거운 물에 타서 만든 짙은 갈색 음료라고 전부 말하지 않고 커피주세요 라는 말로도 커뮤니케이션이 가능 하듯이
자바스크립트에서도 데이터를 편하게 다루기 위해 이름을 붙여 사용하는 것을 변수라고 한다.
동적 타입 언어와 정적 타입 언어
C, C++, Java와 같은 프로그래밍 언어의 경우 변수를 선언할 때 변수에 할당할 수 있는 데이터타입을 명시적으로 선언해야 하고, 이에 따라 각각의 데이터타입에 맞는 메모리 용량을 할당합니다. 명시적으로 선언한 타입과 다른 타입의 값이 할당될 경우 에러를 발생시키고 프로그램이 실행되지 않습니다. 다시 말해, 변수를 선언하는 시점에 데이터 타입에 따른 메모리 용량을 고려하여 선언해야 합니다. 이와 같은 특성을 가진 프로그래밍 언어를 정적 타입 언어로 분류합니다.
JavaScript는 앞에서 언급한 언어들과 대조적으로, 동적 타입 언어로 분류됩니다. JavaScript에서는 변수를 선언할 때 데이터타입을 따로 선언하지 않아도, JavaScript 엔진이 변수에 할당된 값에 따라 동적으로 타입을 지정합니다. 따라서 변수에 어떤 데이터타입을 할당해도 에러가 발생되지 않습니다.
이와 같은 특성은 각각의 언어가 등장한 시기와도 관련이 있습니다. 정적 타입 언어가 등장할 당시에는 메모리의 용량이 상대적으로 넉넉하지 않았던 시기였기 때문에, 메모리를 더 철저하게 관리해야 했습니다. 그러나 비교적 나중에 등장한 JavaScript는 메모리 용량이 과거에 비해 월등히 커진 시기에 등장했기 때문에 조금 더 자유롭게 데이터타입을 사용할 수 있는 형태를 선택했던 것입니다.
그러나 JavaScript와 같은 동적 타입 언어가 정적 타입 언어에 비해 더 나은 언어라고 볼 수는 없습니다. 두 가지 방법 각각의 장점과 단점이 분명하기 때문입니다.
변수의 타입 확인
자바스크립트는 변수 타입을 문자로 반환하는 함수인 typeof 연산자를 제공합니다. typeof 연산자는 undefined, null, boolean, number, string, symbol, object, function의 자바스크립트가 가진 7가지 변수 타입을 구분하는 용도로 사용합니다.
typeof 1234
'number'
typeof 'abcd'
'string'