JS switch문 오류
조회수 634회
<head>
<meta charset="utf-8" />
<title>성적 산정 프로그램</title>
<script>
var input = Number(prompt('숫자를 입력하세요.','숫자'));
switch(input) {
case 숫자 > 89;
alert('A+');
break;
case 숫자 > 79;
alert('A');
break;
case 숫자 > 69;
alert('B+');
break;
case 숫자 > 59;
alert('B');
break;
case 숫자 > 49;
alert('C+');
break;
case 숫자 > 39;
alert('C');
break;
case 숫자 > 29;
alert('D+');
break;
case 숫자 > 19;
alert('D');
break;
case 숫자 < 20;
alert('F');
break;
}
</script>
</head>
왜 실행이 안될까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
- 작성하신 JS 코드는 즉시 인터프리팅되며 바로 실행이 됩니다. 그런 코드는 보통
<body>
태그 안에 (보통</body>
직전에) 둡니다.- 그리고 페이지를 열자마자 실행되는
prompt()
란 솔직히 말하면 어떤 사용자도 원하지 않는 행동입니다. 보통 이런 작업은 버튼 클릭 같은 조건적 상황에 실행합니다.
- 그리고 페이지를 열자마자 실행되는
case
문에 들어 있는숫자
변수는 정의된 적이 없는 변수입니다. 눈을 크게 뜨고 잘 살펴보세요.부등식을
case
조건으로 쓰시려면 이렇게 해야 한다고 합니다. 그나마도 상당히 느리다고 하네요.switch (true) { case (val < 1000): /* do something */ break; case (val < 2000): /* do something */ break; ... }
예컨대
숫자 == 93
일 경우, 사용자는A+
부터F
까지 모든 점수를 받게 됩니다. 잘 생각해 보세요.- 요컨대 '가장 덜 일반적인 경우부터 차례대로' 검사하고, 하나라도 해당될 경우 전체 검사 절차를 중지하는 처리가 필요합니다.
저라면 이런 방식으로 짜겠습니다. 일단 실행은 됩니다.
// 중간 생략 var score = prompt('숫자를 입력하세요.', '숫자'); for (let i = 0; i < gradingRule.length; i++) { // 앞에서부터 점검하여 const rule = gradingRule[i]; if (parseInt(score) >= rule.minScore) { // 하나라도 걸리면 alert('당신의 등급은 ' + rule.grade + '입니다.'); // 응답하고 return true; // 실행 중단 } }
- 👍 편집요청빌런 2020.4.28 23:15
- 감사합니다ㅜ 비효율적인 방법이란것은 알지만, 교수님이 일단 저렇게 구현하시기를 원해서요ㅜ( script로 하길 원하시고+ 아직 for구문을 배우지 않아서요!) 알 수 없는 사용자 2020.4.28 23:20
- 저런... 여기 답글달면서 느끼는 거지만 정말 안좋은 커리큘럼 고집하시는 교수님 선생님들도 적잖은가 보더군요... 힘내세요. 엽토군 2020.4.29 09:15
- 작성하신 JS 코드는 즉시 인터프리팅되며 바로 실행이 됩니다. 그런 코드는 보통
댓글 입력