LHJ

I'm a FE developer.

3-10. 연산자(Operator) / 동등, 부등, 일치, 불일치 연산자

19 Nov 2020 » js_beginner

26. 동등, 부등, 일치, 불일치 연산자

== 연산자

  • 동등 연산자
  • 왼쪽과 오른쪽 값이 같으면 true, 다르면 false
  • 값 타입은 비교하지 않음
    1과 “1”이 같음

      console.log(1 == "1"); // true
    
    1. 값 타입이 다르면,
      즉, “문자:숫자”, “숫자:문자”일 때
      문자 타입을 숫자 타입으로 변환하여 비교
    2. 따라서 모두 1이므로 true 반환
      var value;
      console.log(value == undefined); // true
    
    1. 양쪽이 모두 undefined이므로 true
      var value;
      console.log(value == null); // true
    
    1. undefined와 null을 비교하면 true
    2. undefined와 null은 값입니다.
      값이 다른데도 true가 되므로 주의~!!!!

undefined는 값이 undefined이고 타입은 Undefined입니다.
null은 값이 null이고 타입은 Object입니다.
그런데 값만 비교하므로 true가 반환되는 것입니다.

!= 연산자

  • 부등 연산자
  • 왼쪽과 오른쪽 값이 다르면 true, 같으면 false
  • a != b와 !(a == b)가 같음

=== 연산자

  • 일치 연산자
  • 왼쪽과 오른쪽의 값과 타입이 모두 같으면 true
    값 또는 타입이 다르면 false
  • 1 === 1, true
    1 === “1”, false

      console.log(1 === "1"); // false
    
    1. 값은 같지만 타입이 다르므로 false
      var value;
      console.log(value == null); // true
      console.log(value === null); // false
    
    1. var 로 변수를 선언만 하면 변수값은 undefined
    2. undefined 와 null 은 값입니다.
    3. == (동등 연산자)로 비교하면 true
      === (일치 연산자)로 비교하면 타입이 다르므로 false
    4. 매우 중요한 것!!! 꼭 기억하자!!!!!

비교할 땐 보통 === (일치 연산자)를 사용합니다.
값과 타입을 모두 비교하기 때문에 안전하게 비교를 할 수 있습니다.
그런데 특수한 경우라 === (일치 연산자)를 사용할 수 없을 때, 그때 == (동등 연산자)를 사용합니다.

정리하자면 우선 먼저 ===로 비교하고 그 다음에 상황에 맞춰 ==를 사용해야한다는 것입니다.
이렇게 해야지 ==의 문제에서 벗어날 수 있습니다.

!== 연산자

  • 불일치 연산자
  • 값 또는 타입이 다르면 true
    true 가 아니면 false