자바스크립트는 느슨한 타입의 동적 언어이다.
먼저 동적언어와 정적언어를 살펴보자
동적언어와 정적언어의 차이는 자료를 지정해줄때 타입을 지정하나 마나의 차이입니다.
JavaScritp 같은 경우에는 a = 1234 와 같이
컴파일시 변수의 타입을 지정해주지 않아도 괜찮습니다.
변수의 타입을 Run time실행시 결정해주기 때문입니다.
하지만 정적언어에 경우에는 a = 1234과 같은 경우에는 오류가 발생합니다.
정적언어의 경우에는 컴파일시 바로 변수의 타입을 지정해줘야 합니다.
동적언어는 초기에 타입을 지정안해줘도 되어서 편하고 빠르게 코드를 작성할수 있습니다. 초기에 배우기도 쉽습니다.
하지만 실행도중 예상치 못한 Type Error 이 발생할 가능성이 있어 안정성이 정적언어에 비해 떨어집니다.
자바스크립트는 유연하게 형변환을 할수 있는데 2가지 방식으로 나뉜다.
하나는 암시적 변환으로 자바스크립트 내부에서 런타임 실행시 자동으로 적절한 형변환을 실행해주는 것을 말한다.
ex) '10' * '2' // 10 문자열를 곱해주지만 결과값은 숫자로 자동으로 변환되어서 나온다.
두번째는 명시적 변환으로 개발자가 직접 의도를 가지고 타입을 변환해주는 명시적 변환을 말한다.
ex) perseint(), Number()
'=='
두개의 값을 비교하는데 결과만 일치하면 된다.
'==='
값을 비교하는데 있어서 결과 뿐만 아니라 데이터 타입도 일치해야만한다.
'6' == 6 //true 이지만
'6' === 6 //false 가 출력된다
두개다 값이 없다는 점에서 동일하지만 미세한 차이가 있다.
undefined의 경우
>var test;
console.log(test)
// undefined 와 같이 값이 없는 비어있는 경우이고.
null의 경우
>var test_null = null
console.log(test_null)
// null 이 출력되며 개발자가 의도적으로 값을 비워둔 경우를 말한다.
typeof(test_null)
// object null의 경우 타입이 object가 출력되는걸 알수있다.
typeof(test)
// undefined 반면 undefined과 출력되는걸 볼수있다.