연산자에 대해 질문이 있습니다 :)

해결됨
Go9 프로필

복습 과정 중, 전에는 그냥 지나쳤던 것이 질문이 되어
하나 여쭙게 되었습니다.

n은 수식으로 나타내면
2≤ n ≤ 9 의 범위에 해당합니다.

그러나 if ( 2 <= n <= 9)라 하면 해당 범위가 아닌 숫자들도 계산이 되는데, 이 이유가 혹시 어떤 것때문인가요?

 

<script>
        var n = Number(prompt("몇 단을 출력할까요?"))
        // 원하는 값이 있으면 var n = x;
            if (n >= 2 && n <= 9) {                                   // if ( 2 <= n <= 9) // 이 식이 성립되지 않는 이유는 뭔가요?? 
                var i = 1;
                while(i <= 9) {
                    document.write(n + " * " + i + " = " +  (n * i) + "<br>");               
                    console.log(n + " * " + i + " = " +  (n * i));
                    i++;
                }
            }  else {
                document.write("2 이상, 9 이하의 값만 입력할 수 있습니다.");
                console.log("2 이상, 9 이하의 값만 입력할 수 있습니다.");
            }
    </script>
호눅스 프로필
호눅스 2019.07.18

답변 늦어서 죄송하고 재밌는 질문을 올려 주셨네요.

JS는 수학과 달리 2 <= n <= 9 를 동시에 처리하지 못하고 순서대로 처리합니다.

즉 if ((2 <= n) <= 9) 가 되는 거죠

그리고 이 경우 true는 1, false 는 0으로 간주됩니다.

n = 2 이상이라면 (ex: 100)

2 <= n : true 

true <= 9 // 1 <= 9 이므로 참

n = 1 이라면

2 <= n: false
true <= 9 // 0 <= 9 이므로 참 

그래서 어떤 경우라도 참이 되므로 코드가 원하는 대로 돌아가지 않습니다.
 

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스