728x90

    럭키-[이모티콘]어밴드

    일치연산자란?

    자바스크립트 및 다른 프로그래밍시 자주 사용하는 '==' 일치연산자입니다.
    (참고로 단일 "="는 일치연산자가 아닌 값을 주입한다고 해서 할당연산자라고 부릅니다.)
    일치연산자의 A와 B의 값을 비교하여 동일하면 TRUE, 
    동일하지 않다면 FALSE 리턴하는 것으로 대부분 알고 있으실 것 같습니다.

    일반적으로 일치연산자를 다음과 같이 쓰실 것 같습니다.
    (밑의 코드는 편의상 자바스크립트라고 생각하시면 됩니다.)

    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를 리턴합니다.


    프로그래밍시 정확한 흐름을 원하신다면

    비교되는 값의 형이 다르다면 형변환이 일어나는 '=='을 사용하는 것보다는 

    비교대상의 타입이 다르다면 형변환이 일어나지 않는

     '==='으로 사용하는게 좋을 것 같습니다.


    좀 더 자바스크립트 일치연산자에 대해서 공부하고 싶으시다면

    아래의 링크를 클릭하세요.

    자바스크립트 일치연산자 자세한 내용 바로가기


    '공감' 및 '좋아요'는 글쓴이에게 큰 힘이 됩니다!

    블로그 구독도 부탁드립니다.(네이버이웃 추가)


    아하하-[이모티콘]어밴드



    Posted by 천상나타