자바스크립트(JavaScript) 비교 - 일치연산자 '==' 와 '===' 이해
일치연산자란?
var a = 11; var b = 11; if(a == b){ alert("a와 b는 같다"); }
다음과 같은 코드가 나온다면
당연히 if문은 true이므로 alert창이 "a와 b는 같다"라고 출력됩니다.
당연히 예상되는 부분은 이제 넘어가고
다음 코드를 보시면
var a = 11; var b = "11"; if(a == b){ alert("a와 b는 같다"); }
위처럼 같은 11이지만
a는 정수형 11, b는 문자열 11입니다.
이 두값을 일치연산자 "==" 으로 사용한다면
if문이 true로 리턴할까요?
당연히 일치연산자를 두 값의 일치 여부를 판단한다고 생각한다면
두 값은 엄연히 다른 값이므로 false가 리턴될거라고 예상하실 것 같습니다.
하지만 자바스크립트에서는 위와 같은 경우
a와 b의 값이 같다는 의미로 TRUE 리턴합니다.
왜 그런걸까요?
자바스크립트(JavaScript)에서의 일치연산자('==')
사실 자바스크립트에서의 일치연산자 '=='는
기본적으로 비교 대상이 되는 두개의 타입이 동일하다면 단순히 값만 비교하게 됩니다.
하지만 비교하는 대상의 형(type)이 다르다면 두개의 값을 동일한 형으로 변환을 합니다.
만약에 위처럼 숫자형과 문자열을 비교한다면
문자열 숫자형으로 변환한뒤 두개의 값을 비교합니다.
하지만 문자열이 숫자형으로 변환될 수 없는 값이라면
숫자가 아닌 값이므로 false를 리턴하게 됩니다.
문자열 이외에도 다른 형에서도 일치연산자에서 형변환이 일어납니다.
Boolean 타입인 경우
true는 1, false는 0이라고 생각하시면 됩니다.
var a = 1; var b = true; if(a == b){ alert("a와 b는 같다"); }
위와 같이 a는 1, b는 true라면
if문에서 a와 b는 동일하므로
a와 b의 값이 같다는 의미로 TRUE 리턴합니다.
이외에도 undefined와 null을 비교하면 true를 리턴합니다.
var a = undefined; var b = null; if(a == b){ alert("a와 b는 같다"); }
이외에도 ""는 0을 의미합니다
a와 b의 값이 같다는 의미로 TRUE 리턴합니다.
이와 같이 '==' 일치연산자는 편리하면서 프로그래밍시
염두에 두어야 될 부분이 있습니다.
하지만 자바스크립트에서는 일치연산자 '==='를 제공함으로써
위와 같이 잘못된 프로그래밍 할 수 있는 부분을 보완해 줍니다.
자바스크립트(JavaScript) 일치연산자 '==='
var a = 11; var b = "11"; if(a === b){ alert("a와 b는 같다"); }
위와 같이 일치연산자 '==='를 쓰게된다면 '=='에서 고민하던 부분을 해결해줍니다.
일치연산자 '==='는 비교해야될 두 개의 데이터가 형이 다르다면
형을 변환하지 않고 false를 리턴합니다.
프로그래밍시 정확한 흐름을 원하신다면
비교되는 값의 형이 다르다면 형변환이 일어나는 '=='을 사용하는 것보다는
비교대상의 타입이 다르다면 형변환이 일어나지 않는
'==='으로 사용하는게 좋을 것 같습니다.
좀 더 자바스크립트 일치연산자에 대해서 공부하고 싶으시다면
아래의 링크를 클릭하세요.
'공감' 및 '좋아요'는 글쓴이에게 큰 힘이 됩니다!
'IT > javaScript' 카테고리의 다른 글
자바스크립트 JSON 객체의 parse 및 stringify 정리. (0) | 2018.06.12 |
---|---|
자바스크립트 함수선언, 함수표현식의 차이 그리고 익명함수 관련 정리 (0) | 2018.06.05 |
[자바스크립트] 파라미터와 인자의 차이 - 상세설명 (1) | 2018.05.23 |
[자바스크립트] 주민등록번호 검증 하기 소스 script (0) | 2018.04.23 |
[자바스크립트] 년월 입력 후 마지막날 가져오기 (0) | 2018.04.23 |