본문으로 바로가기

조건문-4.논리연산 5.Booklean의 대체재

category 생활코딩 JavaScript 2018. 11. 17. 16:24


4.논리연산

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

&&(그리고 라는 뜻을 가지고 있다)

&&는 좌항과 우항이 모두 참(true)일 때 참이된다.

 다음 예제를 보자. 결과는 1이다. &&의 좌우항이 모두 true인 것은 첫번째 조건문 밖에 없기 때문이다.

 이러한 논리 연산자를 and 연산자라고 한다.


여러게의boolean을 하나의boolean값으로 결과를 보이는 것

  

if(true && true){ //true 출력가능   

  alert(1);

}

if(true && false){//false 불 출력가능   

    alert(2);

}

if(false && true){//false 불 출력가능   

    alert(3);

}

if(false && false){//false 출력가능   

    alert(4);

}


논리 연산자를 활용한 코드 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
</head>
<body>
    <script>
       var id = prompt('아이디를 입력해주세요.');
       var password = prompt('비밀번호를 입력해주세요.');
        // 조건이 두개가 존재 한다.
        if(id=='egoing' && password==='111111'){
            //좌항 우항 값이 true여야 조건에 만족한다 
            alert('로그인 하셨습니다.'+id+'님 반갑습니다.');
        } else {
            alert('아이뒤가 일치하지안습니다.');
        }
    </script>
</body>
</html>
cs

 덕분에 코드의 복잡성도 낮아졌다. &&는 아래와 같은 의미를 만든다.

"id의 값이 egoing이고 password의 값이 111111이면 참이다"

즉 && 연산자의 좌항과 우항이 모두 참일 때 전체가 참이 되는 것이다.


아이뒤 입력



비밀 번호입력 


일치시 화면 



불일치시 화면 



||(이거아니면 저거(파이프))

'||'는 '||'의 좌우항 중에 하나라도 true라면 true가 되는 논리 연산자다

기호는 통상 엔터키 위에 있는 원화표시 키를 쉬프트와 함께 누르면 입력된다. or 연산자라고 부른다.

 다음 예를 보자. 결과는 1,2,3이 출력된다. 마지막 조건문의 '||'는 좌항과 우항이 모두 false이기 때문에 false가 된다.

  


||를 활용

id 값으로 egoing, k8805, sorialgi 중의 하나를 입력하면 '인증 했습니다'가 출력되고,

 그 외의 값을 입력하면 '인증에 실패 했습니다.'를 출력하는 예제다.

<body>

    <script>

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

    // 밑에 3가지 조건중 하나라도 맞으면 true값이 된다 (조건 만족)

if(id==='egoing' || id==='k8805' || id==='sorialgi'){

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

} else {

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

}

    </script>

</body>

다음 예제는 id 값으로 egoing, k8805, sorialgi 중의 하나를 사용하고 

비밀번호는 111111을 입력하면 right 외의 경우에는 wrong를 출력하는 예다.(||와 && 혼합)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
</head>
<body>
    <script>
    id = prompt('아이디를 입력해주세요.');
    password = prompt('비밀번호를 입력해주세요.');
            if((id==='egoing' || id==='k8805' || id==='sorialgi'&& password==='111111'){
            //괄호를 활용하여 먼저 연산하고 그후 &&를 연산한다  
            alert('인증 했습니다.');
        } else {
            alert('인증에 실패 했습니다.');
        }
    </script>
</body>
</html>
cs


 or와 and를 혼합해서 사용하는 방법을 보여준다. id 값을 테스트 하는 구간을 괄호()로 묶었다. 사용자가 id의 값으로 egoing 비밀번호를 111111을 입력했다면 연산의 순서는 아래와 같이 된다.

  1. (id=="egoing" or id=="k8805" or id=="sorialgi") : true가 된다.
  2. password=='111111' : true가 된다.
  3. true(1항) and true(2항) : true가 된다.

id 비교를 할 때 괄호를 사용한 것은 사칙 연산을 할 때 괄호부터 계산하는 것과 같은 원리다.

!

'!'는 부정의 의미로, Boolean의 값을 역전시킨다. 

true를 false로 false를 true로 만든다. not 연산자라고 부른다. 아래의 결과는 4다.

if(!true && !true){ //false 

  alert(1);

}

if(!true && !false){//false 

    alert(2);

}

if(!false && !true){//false 

    alert(3);

}

if(!false && !false){//true

    alert(4);

}




5.Booklean의 대체재

조건문에 사용될 수 있는 데이터 형이 꼭 불린만 되는 것은 아니다. 

관습적인 이유로 0는 false 0이 아닌 값은 true로 간주된다. 아래의 예제는 2를 출력한다.

1.

if(0){//실행안됨

    alert(1)

}

2.

if(1){// 2출력

    alert(2)

}

하지만 이렇게는 사용하지 않는 것이 좋다

기타 false로 간주되는 데이터 형

다음은 false와 0 외에 false로 간주되는 데이터형의 리스트다.
 if문의 조건으로 !(부정) 연산자를 사용했기 때문에 각 조건문의 첫번째 블록이 실행되는 것은
 주어진 값이 false이기 때문이다.

if(''){    alert('빈 문자열')// 빈문자열은 false를 반환한다 
}
if('kioij'){
    alert('빈문자열');// 문열을 넣었으니 true를 반환한다 
}
if(undefined){
    alert('undefined');// undefined는 자바스크립트에서는 falseㄹ 간주한다
}
 
var a;// 변수는 생성했지만 값이 없으니 undefined이다 
if(!a){
    alert('값이 할당되지 않은 변수'); //그러므로 true
}
if(!null){
    alert('null');//null는 자바스크립트에서는 falseㄹ 간주한다
}
if(!NaN){
    alert('NaN');//NaN는 자바스크립트에서는 falseㄹ 간주한다
}