[JS] 숫자1 <= (타겟 숫자) <= 숫자2

JJeong·2022년 11월 9일
0

배경

특정 숫자가 어느 2개 숫자 사이에 있음을 확인하는 코드가 필요하다.

내가 짠 코드

숫자1 <= (특정 숫자) <= 숫자2

이렇게 했더니 특정 숫자가 숫자2보다 큰 데도 true로 판별되었다.

수정 코드

(특정 숫자) >= 숫자1 && (특정 숫자) <= 숫자2

이렇게 짜야 제대로 판별된다.
<= 이 부등호가 인정되지 않는 것 같다.
수학 교과서에서야 어느 쪽으로 쓰던 인정되지만 javascript에서는 >=만 '작거나 같다'로 인정된다.
댓글로 달아주셔서 문제의 원인을 제대로 알았다!
부등호의 문제가 아니라, 왼쪽 부등호가 먼저 실행되면서 중간값이 boolean으로 변경되기 때문에 벌어진 현상이었다.
해결은 했지만 앞으로는 문제의 원인을 좀더 파고 들면 더 좋을 것 같다!

2개의 댓글

comment-user-thumbnail
2023년 1월 9일

식은 우선순위가 같다면 왼쪽에서 오른쪽으로 실행해나가요.
"숫자1 <= (특정 숫자) <= 숫자2" 이 식은 "true 또는 false <= 숫자2" 이렇게 변경될거에요.
"true 또는 false" 는 js의 묵시적 타입 변환(자동형변환)으로 true이면 1, false이면 0이 될거에요.
즉 "1 또는 0 <= 숫자2"로 변형되어서 숫자2에 따라 최종 결과가 결정되겠네요. 숫자2가 1이상이라면 항상 true가 될거에요.
결국 지영님이 위에서 정리하신대로 조건식의 교집합을 만들어 줄 때는 왼쪽에서부터 조건식을 계산해 나가던가, 이게 복잡하면 && 연산자를 사용해서 두 조건식을 합쳐주면 돼요. 열공하세요. 화이팅~!

1개의 답글