기본 상식 JS -1

EricHan·2022년 8월 25일
0

비교연산자 == 과 ===의 차이

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를 반환한다.

  • 값을 할당하지 않은 변수
  • 메서드와 선언에서 변수가 할당받지 않은 경우
  • 함수가 값을 return 하지 않았을 때

동등연산자와 일치 연산자를 사용해 둘을 비교 해보면

null == undefined //true

null === undefined //false
  • typeof 메서드를 써서 undefined는 출력하면 undefined이다.
  • typeof 메서드를 서서 null은 출력하면 object이다.
    하지만 이는 여전히 원시 타입(primitive value)로, JavaScript에서는 구현 버그로 간주한다.
profile
desarollitor

0개의 댓글