= 과 == 과 === 연산자 차이

Posted by 이상한 나라의 채소토끼
2018. 1. 17. 10:20 JAVASCRIPT & J-QUERY

=과, == ===는 비슷하지만 깊게들어가면 완전 다른의미를 가지고 있는데요. 블로그나 강의를 찾아보니, 조건문을 포함해서 좀더 복잡한 내용을 공부할 때, == ===가 어떻게 다른지, 왜 다르게 해 놨는지를 피부로 느낄 수 있기때문에, 처음부터 완전히 뜻을 이해하고 가려고하기보다는, '아 그냥 다른거구나'정도로 쉽게 받아들이고 넘어가라고 이야기들을 하시네요. 지금은 몰라도 전혀 문제안된다고요. (처음부터 다 이해하려고하면 머리만 아프다고..)

여튼 ==는 Equal Operator라고 하고, ===는 Strict Equal Operator라고 한다고 합니다. strict는 엄격한 이라는 의미로 좀더 엄격하게 같은지를 보는 연산자라고 생각하면 되겠습니다.


===를 좀더 자세히 설명하면
값이라는 의미는 1이라는 데이터는 역시 1이겠죠. ㅎㅎ
형식이라는 의미는 javascript가 똑똑(?)하게도 숫자1과 문자"1"을 1이라는 데이터로 인식할 수 있기때문에, 문자와 값의 형식조차 완벽히 같아야만 true라고 판단(리턴)하게되는것이죠.

예를들어 
1=="1"은 true이지만,
1==="1"은 false입니다.

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

아마도 이제 자바스크립트를 입문한사람들에게는 null undefined까지는 좀 어려운 개념인것같아요. 이부분은 === ==보다 엄격하구나 정도로 생각하고 넘어가는걸 추천합니다. 나중에 가면 이래서 이런거구나 하는 구간이 나와요. :-)

실무 개발자들은 실무에서 코딩을 할때는 ==보다는 ===를 사용해야 한다고 강하게 추천합니다. 이유는 역시 조건문이나, 좀더 복잡한 상황의 프로그래밍에서 차이가 나온다고 하네요.


=는 만약 a=b이라고 했을때, b를 a에 대입해서 a가 b이라고 약속하는 것이라고 합니다.

==는 먄약 a==b이라고 했을때, a가 b과 '값'이 같은지를 판단해서 맞으면 true, 틀리면 false라고 합니다.

===는 만약 a===b이라고 했을대, a가 b과 '값'과 '타입/형식?'이 정확하게 같은지를 판단해서 true/false를 표현합니다.