자바스크립트 if-else 질문

조회수 405회

이미지

수치에 따른 사이즈 출력문입니다만. M이 출력되야하는데 어째서 S가 출력되는지 모르겠습니다 ㅠㅠ

var shirtWidth = 20;
var shirtLength = 29;
var shirtSleeve = 8.38;

if((18 <= shirtWidth < 20) && (28 <= shirtLength < 29) && (8.13 <=shirtSleeve < 8.38) ){
    console.log("S");
} else if((20 <= shirtWidth <22) && (29 <= shirtLength <30) && (8.38 <= shirtSleeve < 8.63)){
    console.log("M");
} else if((22 <= shirtWidth <24) && (30 <= shirtLength <31) && (8.63 <= shirtSleeve < 8.88)){
    console.log("L");
} else if((24 <= shirtWidth <26) && (31 <= shirtLength <32) && (8.88 <= shirtSleeve < 9.63)){
    console.log("XL");
} else if((26 <= shirtWidth <28) && (32 <= shirtLength <33) && (9.63 <= shirtSleeve < 10.13)){
    console.log("2XL");
} else if((shirtWidth >=28) && (shirtLength >=34) && (shirtSleeve >= 10.13)){
    console.log("3XL");
}else{
    console.log("N/A");
}

1 답변

  • 결론부터 말씀드리면...

    a 비교연산자 b 비교연산자 c
    

    위 코드는 엄밀히 따지면 문법 오류입니다. 다음처럼 작성하세요:

    a 비교연산자 b && b 비교연산자 C
    

    S가 출력되는 이유

    문제의 코드는 이거겠죠?

    var shirtWidth = 20;
    18 <= shirtWidth < 20 // true
    

    풀어서 보면 이렇게 됩니다:

    18 <= 20 < 20
    (18 <= 20) < 20
    true < 20
    Number(true) < 20
    1 < 20
    true
    

    이유는 자바스크립트의 특징(연산자에 알맞도록 피연산자의 타입을 변환) 때문입니다.

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

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

(ಠ_ಠ)
(ಠ‿ಠ)