JavaScript는 느슨한 타입(loosely typed)의 동적(dynamic) 언어 이다. 변수의 타입을 미리 선언하지 않아도 알아서 변환해준다. 프로그램 처리 과정에서 타입이 자동으로 파악되고, 같은 변수에 모든 타입의 값으로 할당 & 재할당이 가능하다.
JavaScript는 타입이 매우 유연한 언어로서 자바스크립트 엔진이 필요함에 따라 암시적변환 혹은 개발자의 의도에 따라 명시적변환을 실행한다.
암시적 변환이란 자바스크립트 엔진이 필요에 따라 자동으로 데이터타입을 변환시키는 것이다.
명시적변환이란 개발자가 의도를 가지고 데이터타입을 변환시키는 것이다.
== : 동등 연산자
=== : 일치 연산자
둘 다 값을 비교해주는 비교 연산자이지만 무엇이 다를까?
== 는 값을 비교하기 전 강제 형변환을 수행하여 피 연산자들을 공통 타입으로 만들고 그 안에 있는 값만을 비교하는 '느슨한 비교'를 한다.
그에 비해 === 는 강제 형변환 과정을 수행하지 않는 '엄격한 비교'이기 때문에 type까지 엄격하게 비교해준다.
1 == '1' // true
1 === '1' // false
undefined와 null은 자바스크립트에서 '값이 없음'을 나타내고 있다.
그럼 무엇이 다를까?
undefined
데이터 타입이자 값을 나타내며 '아무 값도 할당받지 않은 상태'를 의미한다. 즉 undefined는 자료형이 없는 상태이다.(변수를 선언만 하고 초기화를 하지 않았을 때)
null
null은 원시값(Primitive Type)중 하나로서 어떤 값이 의도적으로 비어있음을 표현한다.