본문 바로가기

IT 인터넷/javascript

[javascript 언어공부] 논리 연산자

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

이번에는 논리연산자에 대해 알아보자.

논리연산자는 조건문을 좀더 간결하고, 다양한 방법으로 구사할 수 있도록 도와준다.


논리연산자의 종류는 다음과 같다.

&&, ||, ! 


첫번째로 &&에 대해 먼저 알아보자.


1. && (& - Ampersand) 


일명 앤드앤드인 얘는 숫자 7 위에 특수문자 기호이다. 

이고잉 샘은 앰퍼샌드라고 부른다고 해서 찾아보니 &라는 애는 Ampersand 라는 명칭을 가지고 있다.


그리고 우리의 &는 and 라고 읽으며, '그리고'라는 뜻으로 

좌항과 우항이 모두 참일 때만 참이 되는 논리연산자이다. 다음 코드를 보자. 


  if(true && true){     // &&는 좌항과 우항이 모두 참일 때에만 참인 값을 return한다. 따라서 이 if문은 참이다. 

      alert(1);              

  }

  if(true && false){     //좌항과 우항중 하나만 false이면 false이다. 

      alert(2);

  }

  if(false && true){     //좌항과 우항중 하나만 false이면 false이다. 

      alert(3);

  }

  if(false && false){     //좌항과 우항이 모두 false이니 false이다

      alert(4);

  }


이 논리연산자 &&를 이용해서, 저번시간에 봤던 코드를 좀 더 심화시켜보자.


    var id = prompt('아이디를 입력해주세요.');

    if (id === 'estelar') {

      var password = prompt('비밀번호를 입력해주세요.')

      if (password === '12345') {

        alert('로그인 하셨습니다.'+id+'님 반갑습니다.')

      }else {

        alert('패스워드가 일치하지 않습니다.')

      }

    }else {

      alert('아이디가 일치하지 않습니다.')

    };


위의 조건문은 조건문 안에 조건문이 있다. 이를 논리연산자로 하나로 합칠 수 있다.


    var id = prompt('아이디를 입력해주세요.');                            // id를 사용자로부터 입력받고,

    var password = prompt('비밀번호를 입력해주세요.');                // password를 입력받는다. 

    if (id === 'estelar'&&password ==='12345') {                       // 좌항 id가 estelar와 같고, 우항 password가 12345와 같으면

        alert('로그인 하셨습니다.'+id+'님 반갑습니다.');                  // '로그인 하셨습니다 estelar님 반갑습니다' 라는 경고창이 뜨고,

    }else {                                                                          //좌항이 false이거나, 우항이 false이거나 모두 false일 경우엔

      alert('아이디나 패스워드가 일치하지 않습니다.');                   // '아이디나 패스워더가 일치하지 않습니다.'라는 경고창이 뜬다.

    };


이 코드는 사실 위의 코드와 정확히 일치하지는 않는다 ( 위의 코드는 아이디가 틀렸는지, 패스워드가 틀렸는지 알 수 있기 때문이다.)

하지만 비슷하며, 논리연산자 &&를 통해 더욱 간결하게 기능을 구현했다.



2. || (or연산자) 


||는 <- 키와 앤터 키 사이에 위치한 키로 or연산자 이다. 

이는 좌항과 우항 둘중에 하나만 참이여도 참이 되며, 둘다 거짓일 경우에만 거짓이 된다. 


if(true || true){           // 좌항, 우항이 모두 참이기 때문에 true이다. 

    alert(1);

}

if(true || false){          // 좌항, 우항중 하나라도 참이면 true이다.

    alert(2);

}

if(false || true){           //좌항, 우항 중 하나라도 참이면 true이다.

    alert(3);

}

if(false || false){          // 좌항, 우항이 모두 false일 경우만 false이다. 

    alert(4);

}


이를 이용해서 또 다른 코드를 만들어보자.


var id = prompt('아이디를 입력해주세요.');

if (id === 'estelar' || id === 'alice' || id = 'hongjoo') {

    alert('인증 했습니다. ');

}else {

  alert('인증에 실패 하였습니다.');

};


아이디 값이 estelar이거나, alice이거나, hongjoo일 때, 인증이 되고, 

그렇지 않으면 실패한다.


즉 id값이 이 셋중에 하나면 (id === 'estelar' || id === 'alice' || id = 'hongjoo') 이 전체가 true가 되는 것이고,

이 셋중에 하나에도 해당되지 않는 경우에만 이것 전체가 false가 된다는 것이다.


그럼 ||와 &&를 합쳐보자. 


id값이 estelar, alice, hongjoo중 하나인 사람이, 입력한 password 값이 111111인 경우에만 인증을 한다면 어떻게 코드를 짜면 될까? 


var password = prompt('비밀번호를 입력해주세요.');

if((id==='egoing' || id==='k8805' || id==='sorialgi') && password==='111111'){

    alert('인증 했습니다.');

} else {

    alert('인증에 실패 했습니다.');

}


( ) 는 연산순서가 먼저 되도록 묶은 것이다. 먼저 id값이 셋중에 하나와 일치하는지 보고, 일치했을 때, password가 111111일 경우에 

인증을 하는 것이다.


만약 id값이 셋중에 하나와 일치하지 않는다면, &&이기 때문에 뒤의 값은 쳐다보지도 않고 false이다. 



마지막 논리연산자는 느낌표 ! 이다. 


! 는 not이라는 논리연산자로, true앞에 !를 붙이면 false가 된다. 


if(!true && !true){                //!true는 false 이고, !true는 false이다. 따라서 false이다. 

    alert(1);

}

if(!false && !true){               //!false는 true이고, !true는 false이다. 따라서 false이다.

    alert(2);

}

if(!true && !false){               //!true는 false이고, !false는 true이다. 따라서 false이다.

    alert(3);

}

if(!false && !false){              //!false는 true이고, !false는 true이다. 따라서 true이다. 

    alert(4);

}



정리해보면 

&&는 양쪽 다 true일 때만 true이며,
||는 둘 중 하나만 true가 되도 true이며,
!는 not으로 !ture는 false이고, !false는 true이다.