Studyjavascript - javascript2 - test6.html

모쿠모쿠·2022년 6월 6일

JSP

목록 보기
13/151
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
	/*
    swith-case 문(switch 문)
    - 주어진 조건에 따라 값을 비교하여 일치하는 값에 대한 문장 실행
    - if 문과 달리 조건에 대한 범위 지정이 불가능하며, 값에 대한 1:1 매칭을 통해 일치 여부 검사
    - switch 문을 통해 조건식을 판별하고, case 문 뒤에 기술된 값과 비교하여 일치하는 값이 존재하는 case 문의 실행 문장을 실행
    - case 문 뒤의 문장을 실행하다가 break 문을 만나거나 switch 문이 끝날 떄까지
      그 다음 case 문의 문장 또는 default 문의 문장들을 차례대로 모두 실행함
      (=> break 문의 역할은 그 지점에서 switch 문을 종료하는 역할)
      또한, break 문은 생략이 가능함
    - 일치하는 case 문이 없을 경우 실행할 문장은 default 문에 기술함(생략 가능함)
    
    < 기본 문법 >
    switch(식) {
    	case 값1 : 식의 결과가 값1 과 같을 경우 실행할 문장들... [break;]
        case 값2 : 식의 결과가 값2 와 같을 경우 실행할 문장들... [break;]
        case 값n : 식의 결과가 값n 과 같을 경우 실행할 문장들... [break;]
        [default : 일치하는 case 문이 없을 경우 실행할 문장들...]
    }
    */
    
    var num = 3;
    
    // switch 문 소괄호() 내부에 검사할 값 또는 식 전달
//  switch(num) {
//    	// 검사할 값 또는 식의 결과와 일치하는지 여부를 case 문 뒤에 값을 기술하여 판별
//      // => 주의! break 문이 없으므로 num 값에 따라 해당 문장을 실행한 후 
//      //    switch 문이 종료되는 것이 아니라 다음 case 문의 실행 문장까지 실행됨
//      case 1 : alert("1 입니다!");
//      case 2 : alert("2 입니다!"); // num 이 2 일 때 실행할 문장이며
//      case 3 : alert("3 입니다!"); // break 문이 없으므로 num 이 3 일 때 실행할 문장까지 실행됨
//	}

// switch(num) {
//		// 검사할 값 또는 식의 결과와 일치하는지 여부를 case 문 뒤에 값을 기술하여 판별
//		// => 각 문장 뒤에 break 문을 기술하면 해당 break 문을 만났을 때
//		//    다른 case 문을 실행하지 않고 바로 switch 문을 빠져나감(= 종료)
//		case 1 : alert("1 입니다!"); break;
//		case 2 : alert("2 입니다!"); break;
//		case 3 : alert("3 입니다!"); // break; // break 문 생략 가능(마지막 case 문이기 떄문)
// }

// num = 1;
// switch(num) {
//		// 검사할 값 또는 식의 결과와 일치하는지 여부를 case 문 뒤에 값을 기술하여 판별
// 		// => 각 문장 뒤에 break 문을 기술하면 해당 break 문을 만났을 떼
// 		case 1 : 
//			document.write("1 입니다!<br>");
//			document.write("break 문이 있으므로 case 1 수행 후 종료됨!");
//			break;
//		case 2 : 
// 			document.write("2 입니다!<br>");
// 			document.write("beeak 문이 있으므로 case 2 수행 후 종료됨!");
// 			break;
//		case 3 :
//			document.write("3 입니다!<br>");
//			document.write("break 문이 있으므로 case 3 수행 후 종료됨!");
// }

	num = 3;
    switch(num) {
    	case 1 : 
        	document.write("1 입니다!<br>");
            document.write("break 문이 있으므로 case 1 수행 후 종료됨!");
            break;
        case 2 : 
        	document.write("2 입니다!<br>");
            document.write("break 문이 있으므로 case 2 수행 후 종료됨!");
            break;
		case 3 :
        	document.write("3 입니다!<br>");
            document.write("break 문이 있으므로 case 3 수행 후 종료됨!");
            break;
        default : 
        	document.write("일치하는 case 문이 없으므로 default 문 실행됨!");
    }
    
    document.write("<hr>");
    
    // month 변수에 현재 날짜의 달(월)을 입력하고
    // 1, 3, 5, 7 , 8, 10, 12 월일 경우 "31일까지!" 출력,
    // 4, 6, 9, 11 월일 경우 "30일까지!" 출력,
    // 2 월일 경우 "28일까지!" 출력
    var month = 13;
    
    // 	switch(month) {
// 		case 1 : document.write("31일까지!"); break;
// 		case 3 : document.write("31일까지!"); break;
// 		case 5 : document.write("31일까지!"); break;
// 		case 7 : document.write("31일까지!"); break;
// 		case 8 : document.write("31일까지!"); break;
// 		case 10 : document.write("31일까지!"); break;
// 		case 12 : document.write("31일까지!"); break;
// 		case 4 : document.write("30일까지!"); break;
// 		case 6 : document.write("30일까지!"); break;
// 		case 9 : document.write("30일까지!"); break;
// 		case 11 :  document.write("30일까지!"); break;
// 		case 2 : document.write("28일까지!"); break;
// 		default : document.write("입력 오류!");
// 	}

	// 31일까지의 달 7개, 30일까지의 달 4개는 중복되는 코드가 발생함
	// 따라서, break 문의 특성을 활용하면 중복되는 코드 제거가 가능함
	month = 4;
	switch(month) {
		case 1 : // 1월부터
		case 3 : // 12월까지
		case 5 : // 31일에 해당하는
		case 7 : // 월(month)이 입력될 경우
		case 8 : // 코드 중복을 제거하여
		case 10 : // 12월에서만 코드가 실행되도록 break 문까지 생략
		case 12 : document.write(month + "월 : 31일까지!"); break; // switch 문 빠져나감
		case 4 : // 4, 6, 9, 11월에 해당하는 월 입력 시
		case 6 : // 모든 실행문을 11월에 위치시켜
		case 9 : // 하나의 문장으로 4개의 case 문의 처리 가능
		case 11 :  document.write(month + "월 : 30일까지!"); break;
		case 2 : document.write(month + "월 : 28일까지!"); break;
		default : document.write(month + "월 : 입력 오류!");
	}
	
// => 해결2) 입력받은 문자 형태의 데이터를 숫자 형태의 데이터로 변환(Number(데이터))	
switch(Number(month2)) {
	case 1 : // 1월부터
	case 3 : // 12월까지
	case 5 : // 31일에 해당하는
	case 7 : // 월(month)이 입력될 경우
	case 8 : // 코드 중복을 제거하여
	case 10 : // 12월에서만 코드가 실행되도록 break 문까지 생략
	case 12 : document.write(month + "월 : 31일까지!"); break; // switch 문 빠져나감
	case 4 : // 4, 6, 9, 11월에 해당하는 월 입력 시
	case 6 : // 모든 실행문을 11월에 위치시켜
	case 9 : // 하나의 문장으로 4개의 case 문의 처리 가능
	case 11 :  document.write(month + "월 : 30일까지!"); break;
	case 2 : document.write(month + "월 : 28일까지!"); break;
	default : document.write(month + "월 : 입력 오류!");
}

</script>
</head>
<body>

</body>
</html>
Insert title here

// num = 1;
// switch(num) {
// // 검사할 값 또는 식의 결과와 일치하는지 여부를 case 문 뒤에 값을 기술하여 판별
// // => 각 문장 뒤에 break 문을 기술하면 해당 break 문을 만났을 떼
// case 1 :
// document.write("1 입니다!
");
// document.write("break 문이 있으므로 case 1 수행 후 종료됨!");
// break;
// case 2 :
// document.write("2 입니다!
");
// document.write("beeak 문이 있으므로 case 2 수행 후 종료됨!");
// break;
// case 3 :
// document.write("3 입니다!
");
// document.write("break 문이 있으므로 case 3 수행 후 종료됨!");
// }

num = 3;
switch(num) {
	case 1 : 
    	document.write("1 입니다!<br>");
        document.write("break 문이 있으므로 case 1 수행 후 종료됨!");
        break;
    case 2 : 
    	document.write("2 입니다!<br>");
        document.write("break 문이 있으므로 case 2 수행 후 종료됨!");
        break;
	case 3 :
    	document.write("3 입니다!<br>");
        document.write("break 문이 있으므로 case 3 수행 후 종료됨!");
        break;
    default : 
    	document.write("일치하는 case 문이 없으므로 default 문 실행됨!");
}

document.write("<hr>");

// month 변수에 현재 날짜의 달(월)을 입력하고
// 1, 3, 5, 7 , 8, 10, 12 월일 경우 "31일까지!" 출력,
// 4, 6, 9, 11 월일 경우 "30일까지!" 출력,
// 2 월일 경우 "28일까지!" 출력
var month = 13;

// 	switch(month) {

// case 1 : document.write("31일까지!"); break;
// case 3 : document.write("31일까지!"); break;
// case 5 : document.write("31일까지!"); break;
// case 7 : document.write("31일까지!"); break;
// case 8 : document.write("31일까지!"); break;
// case 10 : document.write("31일까지!"); break;
// case 12 : document.write("31일까지!"); break;
// case 4 : document.write("30일까지!"); break;
// case 6 : document.write("30일까지!"); break;
// case 9 : document.write("30일까지!"); break;
// case 11 : document.write("30일까지!"); break;
// case 2 : document.write("28일까지!"); break;
// default : document.write("입력 오류!");
// }

// 31일까지의 달 7개, 30일까지의 달 4개는 중복되는 코드가 발생함
// 따라서, break 문의 특성을 활용하면 중복되는 코드 제거가 가능함
month = 4;
switch(month) {
	case 1 : // 1월부터
	case 3 : // 12월까지
	case 5 : // 31일에 해당하는
	case 7 : // 월(month)이 입력될 경우
	case 8 : // 코드 중복을 제거하여
	case 10 : // 12월에서만 코드가 실행되도록 break 문까지 생략
	case 12 : document.write(month + "월 : 31일까지!"); break; // switch 문 빠져나감
	case 4 : // 4, 6, 9, 11월에 해당하는 월 입력 시
	case 6 : // 모든 실행문을 11월에 위치시켜
	case 9 : // 하나의 문장으로 4개의 case 문의 처리 가능
	case 11 :  document.write(month + "월 : 30일까지!"); break;
	case 2 : document.write(month + "월 : 28일까지!"); break;
	default : document.write(month + "월 : 입력 오류!");
}

// => 해결2) 입력받은 문자 형태의 데이터를 숫자 형태의 데이터로 변환(Number(데이터))
switch(Number(month2)) {
case 1 : // 1월부터
case 3 : // 12월까지
case 5 : // 31일에 해당하는
case 7 : // 월(month)이 입력될 경우
case 8 : // 코드 중복을 제거하여
case 10 : // 12월에서만 코드가 실행되도록 break 문까지 생략
case 12 : document.write(month + "월 : 31일까지!"); break; // switch 문 빠져나감
case 4 : // 4, 6, 9, 11월에 해당하는 월 입력 시
case 6 : // 모든 실행문을 11월에 위치시켜
case 9 : // 하나의 문장으로 4개의 case 문의 처리 가능
case 11 : document.write(month + "월 : 30일까지!"); break;
case 2 : document.write(month + "월 : 28일까지!"); break;
default : document.write(month + "월 : 입력 오류!");
}

profile
Hello, Velog!

0개의 댓글