JavaScript는 느슨한 타입(loosely typed)의 동적(dynamic) 언어입니다. JavaScript의 변수는 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당 (및 재할당) 가능합니다.
let foo = 42 // foo가 숫자
foo = 'bar' // foo가 이제 문자열
foo = true // foo가 이제 불리언
라고 문서에 설명이 되어있다.
글만 읽었을때는 무슨뜻인지 잘 이해가 가지 않았는데 예문을 보니 쉽게 이해가 갔다.
1열의 42 에서는 int형으로 선언하였다.
그런데 이 선언한 foo 값을 아래에서
재할당하면서 42가 'bar' 라는 스트링으로 변경되었다.
또한 그 밑에서는 값이 'bar'에서 true 인 불리언으로 또 변경되었다.
이렇게 이미 한번 선언이 되었음에도
재할당이 여러번 가능하며 또한 특정 자료형에 구속되지않고
자유로운 형변환이 가능하기때문에 느슨한 타입의 동적 언어라고 하는것이었다.