자바스크립트 질문입니다

조회수 508회
var num = 11;
(num > 100) && num++;
document.writeln("num : "+num+"<br/>"); //값num : 11

(num < 100) || num++;
document.writeln("num : "+num+"<br/>");//값num : 11

(num < 100) && num++;
document.writeln("num : "+num+"<br/>");//값num : 12

(num > 100) || num++;
document.writeln("num : "+num+"<br/>");//값num : 13

document.writeln("12&1 : "+!(12&1)+"<br/>");//12&1 : true
document.writeln("13&1 : "+!(13&1)+"<br/>");//13&1 : false

값이 이렇게 나오는데 3번쨰 부터 100이 클 경우 변수의 값이 하나씩 늘어나는지 모르겠어요.,.,.설명좀해주실분.. 그리고 마지막 부분 왜 true 가 나오고 false 가 나오는지도 설명좀...ㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 모든것은 연산자님의 뜻대로...

    논리 연산자

    좌측변 && 우측변
    

    AND 연산자는 좌측변이 false면 우측변이 true여도 결과는 false이므로 좌측변이 false일 때 우측변의 평가(≒실행)를 생략합니다.

    좌측변 || 우측변
    

    OR 연산자는 어느 한 쪽이 true면 다른 한 쪽은 뭐든 상관없이 true이므로 좌측변이 true일 때 우측변의 평가를 생략합니다.

    위를 바탕으로 한 줄씩 보면:

    var num = 11;
    (num > 100) && num++; // 좌측변이 false이므로 우측변은 생략
    (num < 100) || num++; // 좌측변이 true이므로 우측변은 생략
    (num < 100) && num++; // 좌측변이 true이므로 우측변까지 실행 num은 12
    (num > 100) || num++; // 좌측변이 false이므로 우측변까지 실행 num은 13
    

    가 됩니다.

    비트 연산자

    12 & 1의 연산 결과는 0입니다. &&는 논리 AND라고 부르고, &비트 AND라 부르는 것으로서, 둘은 다릅니다.

    console.log(12..toString(2)) /* "1100" */
    console.log(1..toString(2)) /* "1" */
    console.log(12 & 1) /* 1100 과 0001 의 비트 AND 결과는 0000 */
    

    끗.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)