비교연산자 == 과 ===의 차이
JS에서는 엄격한 비교(일치 비교)와 형변환 비교(동등 비교) 두가지 비교 방법이 있다.
동등 연산자 (==)
두 피연산자의 자료형을 일치시킨 후, 엄격하게 비교를 수행
일치 연산자 (===)
자료형 변환 없이 두 피연산자가 엄격히 같은지 판별
일치 연산자(===)일 경우
피연산자들의 값과 타입을 모두 비교
즉 , 비교되는 두 값이 값과 타입 모두 동일해야만 결과 값으로 true가
3 === 3 // true
3 === '3' // false
동등 연산자(==) 같은 경우 피연산자들의 값만 비교한다.
즉, 비교되는 두 값이 값만 같으면 타입과는 상관 없이 결과 값으로 true가 나온다.
1 == 1 // true
"1" == 1 // true
1 == '1' // true
0 == false // true
0 == null // false
0 == undefined // false
null == undefined // true
=========================================
null과 undefined 비교
둘다 모두 '값이 없음'이라는 뜻을 가지고 있고 데이터 타입 종류 중 하나이다.
차이점은
null은 값이지만, 값으로써 의미없는 특별한 값이 등록되어 있는 것(값으로 지정만 안되어 있지만 공간은 차지 = 값이 빈 상태 = 빈 객체 상태)
undefined은 변수를 선언하고 값을 할당하지 않은 상태( 자료형이 없는 상태 = 등록이 되어있지 않아 초기화도 정의되어 있지 않은 것)
참고)
undefined는 예약어가 아니기 때문에, 전역 범위 외에서 변수 이름으로 사용할 수 있다. 그러나 유지보수와 디버깅에 어려움을 겪을 수 있으므로 피하는 것이 좋다.
이와 같은 상황에서 undefined를 반환한다.
동등연산자와 일치 연산자를 사용해 둘을 비교 해보면
null == undefined //true
null === undefined //false