개발자

값을 비교할 때 ==는 왜 쓰나요?

2023년 02월 06일조회 223

값을 비교할 때 ==는 타입까지는 고려해 주지 않기 때문에 ===를 쓰는 것이 실수를 방지할 수 있다는 내용의 아티클이 많은데요, 이걸 보면서 질문이 생겼습니다. 1. 그럼 ==는 왜 있는건가요..? 2. 모든 경우에 ==보다 ===를 쓰는 것이 더 유리한가요? 감사합니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 4

인기 답변

장익순님의 프로필 사진

초기 javascript가 개발되면서 변수 비교를 하는 ==을 만들었는데 javascript가 빠르게 만들어진 언어다 보니 구멍도 많은데 특히 다른 언어처럼 데이터 타입까지 비교하는 것이 없다보니 문제가 발생하여 이후 타입까지 비교하게 된 ===이 만들어져 둘다 있게 되었습니다. === 이 == 보다 유리하다는 확답을 드릴 수 없는 것이 개발에 따른 환경마다 다르기 때문입니다 물론 ===을 사용하여 타입까지 마춰 비교를 하는 것을 추천하지만 MDN에서도 "어느 연산을 쓸 지 그 선택은 당신이 어떤 종류의 비교를 수행하기 위해 찾고 있는 지에 달렸습니다." 라고 한 것처럼 개발에 따라 이유 있시 사용하면 좋을 것 같아요 MDN 동치 비교 및 동일성 https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures

profile picture

익명

작성자

2023년 02월 07일

오 어쩌다 ===이 새로 만들어 진 건지도 설명해주셔서 감사합니다! 언제 ==를 써야 하는지 이유를 가지고 잘 생각해 볼게요!

인기 답변

김주호님의 프로필 사진

https://stackoverflow.com/questions/53111169/in-which-year-was-the-triple-equals-sign-introduced-to-javascript 위 링크에 따르면 두 연산자는 동시에 나온 것이 아닙니다 (허거덩~) 결국 언어도 어떤 역사에 의해 기능이 쌓이고 쌓이는 느낌이네요 저는 대부분 ===을 사용하지만 null 혹은 undefined (nullish value)를 체크할 때 유용하게 사용하고 있습니다. const unknown = "idontknow" // if(unknown !== null && unknown !== undefined) ... 대신 if(unknown != null)

profile picture

익명

작성자

2023년 02월 07일

허거덩~ 그렇군요 ㅋㅋㅋ 주호님 말씀처럼 null과 undefined 체크하는 상황에 사용할 수 있겠네요! 이해하기 쉬운 예시 들어 주셔서 감사합니다!

호빵님의 프로필 사진

2와 "2" 가 업무적으로 같다고 봐도 되는 상황일때 ===를 사용하면 형변환을 해줘야 하지만 ==를 사용하면 형변환을 하는 코드를 작성하지 않아도 되니까 편하겠죠?

profile picture

익명

작성자

2023년 02월 07일

2와 "2"가 업무적으로 같다고 봐야 하는 상황이 있을 수 있겠군요! 답변 감사합니다.

😎님의 프로필 사진

1. 자바스크립트는 이상한 부분이 참 많은 언어입니다. 처음엔 == 이렇게 값만 비교 하는 문법을 사용했지만, 많은 오류가 발생하고 유지 보수가 힘들게 만들었겠죠. 그래서 === 나온겁니다. 예를들면 0 == false 0 == [] 0 == '' [] == '' 등등.. 이런 falsy 값들 과 비교하면 전부 true 가 나오죠. 아주 에러가 발생하기 딱 좋죠? 2. 저는 === 이것만 쓰는 걸 선호합니다. - 유지보수 - 관습 (자바스크립트를 주 언어로 사용하시는 분들은 대부분 === 이렇게 사용할 것입니다.) - 에러 방지 추가적으로 - 2 와 '2' 를 비교하기 위해 == 를 쓰는 건 좋지 못한 습관이라고 생각합니다. 좀더 명시적으로 이 비교가 무엇을 하는지 확실하게 나타낼 필요가 있다고 생각합니다. - https://eslint.org/docs/latest/rules/eqeqeq eslint에도 === 만 사용하게 하는 룰이 있습니다. 이 룰을 사용할지 말지는 팀원들과 소통해서 정하시면 됩니다~

profile picture

익명

작성자

2023년 02월 08일

오호 그렇군요.. 새로운 의견 감사합니다 고민해 보겠습니다!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!