이번에는 논리연산자에 대해 알아보자.
논리연산자는 조건문을 좀더 간결하고, 다양한 방법으로 구사할 수 있도록 도와준다.
논리연산자의 종류는 다음과 같다.
&&, ||, !
첫번째로 &&에 대해 먼저 알아보자.
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);
}
'IT 인터넷 > javascript' 카테고리의 다른 글
[javascript 언어공부] 반복문(1) - while문 (0) | 2018.05.28 |
---|---|
[javascript 언어공부] boolean의 대체제 (0) | 2018.05.28 |
[javascript 언어공부] 조건문(2) (0) | 2018.05.28 |
[javascript 언어공부] 조건문(1) (0) | 2018.05.25 |
[javascript 언어공부] 비교 (0) | 2018.05.25 |