본문 바로가기
개발/기본) 개발용어

잡학지식) 관계연산 == 과 ===의 차이

by 테샤르 2019. 9. 26.

관계연산 == 과 ===의 차이

 

관계연산 ==과 ===를 구분해서 사용하는 경우가 종종 있다. 그래서 기본적으로는 어떤건지는 알고 작업에 임하는것이 좋을꺼라는 개인적인 생각에 의거해서 작성하게 된 글입니다.

 

==의 명칭은 (Equal Operator)이고  ===는 (Strict Equal Operator)라고  합니다.

strict는 엄격한 이라는 의미로 좀더 엄격하게 같은지를 보는 연산자라고 생각하시면 됩니다.

 

  • =는 만약 a=b이라고 했을때, b를 a에 대입해서 a가 b이라고 약속하는 것이라고 합니다.
  • ==는 먄약 a==b이라고 했을때, a가 b과 '값'이 같은지를 판단해서 맞으면 true, 틀리면 false라고 합니다.
  • ===는 만약 a===b이라고 했을대, a가 b과 '값'과 '타입/형식?'이 정확하게 같은지를 판단해서 true/false를 표현합니다.

.
===를 좀더 자세히 설명하면 다음과 같습니다.


데이터 값으로의 의미는 1이라는 데이터는 역시 1인데. 형식이라는 의미는 javascript가 똑똑(?)하게도 숫자1과 문자"1"을 1이라는 데이터로 인식할 수 있기때문에, 문자와 값의 형식조차 완벽히 같아야만 true라고 판단(리턴)하게 됩니다.

 

ex)
1=="1"은 true이지만,
1==="1"은 false입니다.

또,
null과 undefined는 값이 없다는 의미의 데이터 형이라고 합니다. null은 값이 없음을 명시적으로 표시한 것이고, undefined는 그냥 값이 없는 상태이기때문에, ==로는 true가 뜨지만, ===로는 false가 리턴됩니다.

 

아마도 이제 자바스크립트를 입문한사람들에게는 null과 undefine 조금 구분하기 힘들꺼라고 예상됩니다.

 

이부분은 ===가 ==보다 엄격하구나 정도로 생각하고 넘어가는걸 추천합니다. 나중에 이런 코드들을 접하게되면 정확한 의미를 알게됩니다. 실제 자료형과 데이터가 같은지를 비교하기 위해서는  === 를 사용하는게 명확합니다. 그래서 실무에서 코딩을 할때는 ==보다는 ===를 사용해야 한다고 강하게 추천합니다. 이유는 역시 조건문이나, 좀더 복잡한 상황에서의 예측및 비교가 되기 때문이죠. 

 

결론은 '자료형과 값을 같이 비교하기 위해서는 ==='를 사용해서 조금더 명시적인 표현으로 분기처리를 하는 방식에 대해서 알고있자!'가 개인적인 생각입니다.

 

 

반응형

댓글