=
과, ==
과 ===
는 비슷하지만 깊게들어가면 완전 다른의미를 가지고 있는데요. 블로그나 강의를 찾아보니, 조건문을 포함해서 좀더 복잡한 내용을 공부할 때, ==
와 ===
가 어떻게 다른지, 왜 다르게 해 놨는지를 피부로 느낄 수 있기때문에, 처음부터 완전히 뜻을 이해하고 가려고하기보다는, '아 그냥 다른거구나'정도로 쉽게 받아들이고 넘어가라고 이야기들을 하시네요. 지금은 몰라도 전혀 문제안된다고요. (처음부터 다 이해하려고하면 머리만 아프다고..)
여튼 ==
는 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라고 판단(리턴)하게되는것이죠.
예를들어 1=="1"
은 true이지만,1==="1"
은 false입니다.
또,null
과 undefined
는 값이 없다는 의미의 데이터 형이라고 합니다. null
은 값이 없음을 명시적으로 표시한 것이고, undefined
는 그냥 값이 없는 상태이기때문에, ==
로는 true가 뜨지만, ===
로는 false가 리턴됩니다.
아마도 이제 자바스크립트를 입문한사람들에게는 null
과 undefined
까지는 좀 어려운 개념인것같아요. 이부분은 ===
가 ==
보다 엄격하구나 정도로 생각하고 넘어가는걸 추천합니다. 나중에 가면 이래서 이런거구나 하는 구간이 나와요. :-)
실무 개발자들은 실무에서 코딩을 할때는 ==
보다는 ===
를 사용해야 한다고 강하게 추천합니다. 이유는 역시 조건문이나, 좀더 복잡한 상황의 프로그래밍에서 차이가 나온다고 하네요.