5 분 소요



자바 스크립트 #2


조건문

if-else문

time이 12보다 적으면 “Good Morning”을 출력하고 그렇지 않으면 “Good Afternoon”을 출력한다.

<!DOCTYPE html>
<html>

<body>
    <h1 id="test1"></h1>
    <h1 id="test2"></h1>
    <script>
        let time = new Date().getHours();
        let msg;
        document.getElementById("test1").innerHTML = "time="+time;
        if (time < 12) {
            msg = "Good Morning";
        } else {
            msg = "Good Afternoon";
        }
        document.getElementById("test2").innerHTML = msg;
    </script>
</body>
</html>


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>if-else</title>
</head>
<body>
<h3>if-else를 이용한 학점 매기기</h3>
<hr>
<script>
	let grade;
	let score = prompt("황기태 님 점수를 입력하세요", 100);
	score = parseInt(score); // 문자열을 숫자로 바꿈
	if(score >= 90) // score가 90 이상
		grade = "A";
	else if(score >= 80) // 80 이상 90 미만
		grade = "B";
	else if(score >= 70) // 70 이상 80 미만
		grade = "C";
	else if(score >= 60) // 60 이상 70 미만
		grade = "D";
	else // 60 미만
		grade = "F";
	document.write(score + "" + grade + "입니다.<br>")
</script>
</body>
</html>

switch 문

만약 가능한 실행 경로가 여러 개인 경우에는 switch 문을 사용하는 것이 좋다. switch 문은 제어식의 값에 따라 다음에 실행할 문장을 결정하게 된다

<!DOCTYPE html>
<html>
<body>
    <h1 id="test"></h1>
    <script>
        let day = new Date().getDay();


        switch (day) {
            case 0:
            case 6:
                day = "주말";
                break;
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                day = "주중";
                break;
        }
        document.getElementById("test").innerHTML = "오늘은 " + day + "입니다";
    </script>
</body>
</html>



case, break

case

  • case 문의 ‘값’ 은 const로 선언된 상수나 리터럴 만 가능
  • case 문의 ‘값’ 에 변수나 식은 사용 불가

break

  • switch 문 종료
  • break; 문을 만날 때까지 아래로 코드 계속 실행

swith 예제 2

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>switch</title>
</head>
<body>
<h3>switch 문으로 커피 주문</h3>
<hr>
<script>
	let price = 0;
	let coffee = prompt("무슨 커피 드릴까요?", "");
	switch(coffee) {
		case "espresso" :
		case "에스프레소" : price = 2000;
			break;
		case "카푸치노" : price = 3000;
			break;
		case "카페라떼" : price = 3500;
			break;
		default : 
			document.write(coffee + "는 없습니다.");
	}
	if(price != 0)
		document.write(coffee + "" + price + "원입니다.");
</script>
</body>
</html>



반복문


for

예제 : for문으로 10px ~ 35px크기로 출력

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>for 문</title>
</head>
<body>
<h3>for 문으로 10px~35px 크기 출력</h3>
<hr>
<script>
	for(let size=10; size<=35; size+=5) { // 5씩 증가
		document.write("<span ");
		document.write("style='font-size:" + size + "px'>");
		document.write(size + "px");
		document.write("</span>");
	}
</script>
</body>
</html>



while

while문으로 0~n까지의 합 구하기

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>while 문</title>
</head>
<body>
<h3>while 문으로 0에서 n까지 합</h3>
<hr>
<script>
	let n = prompt("0보다 큰 정수를 입력하세요", 0); 
	n = parseInt(n); // 문자열 n을 숫자로 바꿈

	let i=0, sum=0;
	while(i<=n) { // i가 0에서 n까지 반복
		sum += i;
		i++;
	}
	document.write("0에서 " + n + "까지 합은 " + sum);
</script>
</body>
</html>



do/while

do/while문으로 0~n까지 합 구하기

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>do-while 문</title>
</head>
<body>
<h3>do-while 문으로 0에서 n까지 합</h3>
<hr>
<script>
	let n = prompt("0보다 큰 정수를 입력하세요", 0); 
	n = parseInt(n); // 문자열 n을 숫자로 바꿈

	let i=0, sum=0;
	do { 
		sum += i;
		i++;
	} while(i<=n); // i가 0~n까지 반복  
	document.write("0에서 " + n + "까지 합은 " + sum);
</script>
</body>
</html>



break

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>break 문</title>
</head>
<body>
<h3>1에서 얼마까지 더해야 3000을 넘는가?</h3>
<hr>
<script>
	let i=0, sum=0;
	while(true) { // 무한 반복
		sum += i;
		if(sum > 3000)
			break; // 합이 3000보다 큼. 반복문 벗어남
		i++;
	}
	document.write(i + "까지 더하면 3000을 넘음 : " + sum);
</script>
</body>
</html>



continue

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>continue 문</title>
</head>
<body>
<h3>3으로 나눈 나머지가 1인 수만 더하기</h3>
<hr>
<script>
	let sum=0;
	for(let i=1; i<=10; i++) { // i가 1에서 10까지 반복
		if(i%3 != 1) // 3으로 나눈 나머지가 1이 아닌 경우
			continue; // 다음 반복으로 점프(i++ 코드로)
		document.write(i + " ");
		sum += i;
	}
	document.write("합은 " + sum);
</script>
</body>
</html>




함수


함수는 입력을 받아서 특정한 작업을 수행하여서 결과를 리턴한다.

<!DOCTYPE html>
<html>
<head>
    <script>

        function showDialog() {
            alert("안녕하세요?");
        }
    </script>
</head>

<body>
    <button onclick="showDialog()">대화상자오픈</button>
</body>
</html>


adder()함수 작성 및 호출

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>함수</title>
<script>
function adder(a, b) { // 함수 작성
	let sum;
	sum = a + b;
	return sum;
}
</script>
</head>
<body>
<h3>함수 adder()</h3>
<hr>
<script>
	let n = adder(24567, 98374); // 함수 호출
	document.write("24567 + 98374는 " + n + "<br>");
</script>
</body>
</html>


무명, 화살표 함수

anonymous function : 함수 이름을 주지 않고 만들어서 한 번만 사용하는 경우


arrow function : 화살표 함수를 사용하면 더 짧은 함수 구문을 작성할 수 있다.

<!DOCTYPE html>
<html>
<body>
    <p id="test"></p>
    <script>
        let func = (a, b) =>a * b;
        document.getElementById("test").innerHTML = func(4, 5);
    </script>
</body>
</html>



전역함수



<!DOCTYPE html>
<html>
<head><meta charset="utf-8">
<title>자바스크립트 전역함수</title>
<script>
function evalParseIntIsNaN() {
	let res = eval("2*3+4*6"); // res는 30
	document.write("eval(\"2*3+4*6\")는 " + res + "<br>");
	let m = parseInt("32");
	document.write("parseInt(\"32\")는 " + m + "<br>");
	let n = parseInt("0x32");
	document.write("parseInt(\"0x32\")는 " + n + "<br><br>");

	// "hello"는 정수로 변환할 수 없으므로 parseInt("hello")는 NaN 리턴
	n = parseInt("hello"); 
	if(isNaN(n)) // true
		document.write("hello는 숫자가 아닙니다.");
}
</script>
</head>
<body>
<h3>eval(), parseInt(), isNaN()</h3>
<hr>
<script>
	evalParseIntIsNaN();
</script>
</body>
</html>


예제 : 온도변환하기

<!DOCTYPE html>
<html>
<head><meta charset="utf-8">
<title>자바스크립트 전역함수</title>
<script>
function evalParseIntIsNaN() {
	let res = eval("2*3+4*6"); // res는 30
	document.write("eval(\"2*3+4*6\")는 " + res + "<br>");
	let m = parseInt("32");
	document.write("parseInt(\"32\")는 " + m + "<br>");
	let n = parseInt("0x32");
	document.write("parseInt(\"0x32\")는 " + n + "<br><br>");

	// "hello"는 정수로 변환할 수 없으므로 parseInt("hello")는 NaN 리턴
	n = parseInt("hello"); 
	if(isNaN(n)) // true
		document.write("hello는 숫자가 아닙니다.");
}
</script>
</head>
<body>
<h3>eval(), parseInt(), isNaN()</h3>
<hr>
<script>
	evalParseIntIsNaN();
</script>
</body>
</html>

댓글남기기