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