자바스크립트 입문한 지 몇 달 됐는데 아직도 == 랑 === 이거 헷갈려서 질문 올려요. 그냥 실무에선 다들 ===만 쓰라고 하길래 그렇게 쓰고는 있는데, 왜 그런지를 모르니까 계속 찝찝하더라고요.
제가 콘솔에서 이것저것 찍어봤는데 결과가 좀 이상했어요.
console.log(0 == ''); // false ?
console.log(0 == '0'); // true
console.log('' == '0'); // false
console.log(0 == false); // true
console.log(null == undefined); // true
console.log(null == 0); // false
여기서 제일 헷갈리는 게 0 == '' 는 false인데 0 == '0' 은 true라는 거예요. 빈 문자열이나 '0' 이나 둘 다 문자열인데 왜 하나만 true가 되는 건지 감이 안 잡혀요. 그리고 null == undefined 는 true인데 null == 0 은 false인 것도 규칙이 있는 건가요 아니면 그냥 외워야 하는 건가요.
== 가 형변환(타입을 자동으로 바꿔서 비교)을 한다는 건 어디서 주워들었는데, 정확히 어떤 순서로 바꾸는지를 모르니까 결과 예측이 안 돼요. 위에 케이스들 왜 저렇게 나오는지 좀 풀어서 설명해주실 수 있을까요.
그리고 실무에서 == 를 써도 되는 순간이 아예 없는 건지도 궁금해요. 어떤 코드 보니까 if (x == null) 이런 식으로 일부러 == 쓰던데 이건 실수인가요 아니면 의도한 건가요. 그냥 무조건 === 만 쓰면 되는 건지 조언 부탁드립니다.