자바스크립트에서 변수의 타입을 선언할 수 있을까?
결론부터 말하자면, 자바스크립트는 동적 타입 언어이다. 따라서 변수의 타입을 선언하지 않는다. 동적 타입 언어가 무엇인지 알아 보기 전에 정적 타입 언어가 무엇인지 이해하면 동적 타입 언어를 더 쉽게 이해할 수 있다.
정적 타입 언어란 변수 선언 시 변수에 할당할 수 있는 값의 종류, 즉 데이터 타입을 명시적으로 선언해야 하는 언어이다.
정적 타입 언어는 변수의 타입을 변경할 수 없고 변수에 선언한 타입에 맞는 값만 할당할 수 있다.
정적 타입 언어의 경우, 자바스크립트와 다르게 변수를 선언할 때 데이터 타입을 명시적으로 선언해야 한다.
자바스크립트는 정적 타입 언어가 아닌 동적 타입 언어이다. 그렇다면 동적 타입 언어란 무엇일까.
동적 타입 언어란 선언이 아닌 할당에 의해 변수의 타입이 결정되는 언어이다.
자바스크립트에서는 변수의 데이터 타입을 선언하지 않는다. 값을 할당함으로써 변수의 데이터 타입이 결정된다. 그리고 값을 재할당하면 변수의 데이터 타입은 동적으로 변경된다.
let foo;
console.log(typeof foo); // undefined
foo = 1;
console.log(typeof foo); // number
foo = '1';
console.log(typeof foo); // string
foo = true;
console.log(typeof foo); // boolean
foo = {};
console.log(typeof foo); // object
자바스크립트에서 변수는 어떤 데이터 타입의 값이라도 저장할 수 있으므로 정적 타입 언어에서의 데이터 타입과 개념이 다르다.
데이터 타입의 필요성 포스팅에서도 언급했듯이 자바스크립트의 모든 값은 데이터 타입을 갖는다. 변수가 아닌 값이 데이터 타입을 갖는다. 따라서 자바스크립트에서 변수의 데이터 타입은 변수에 할당된 값에 의해 결정된다고 볼 수 있다.