if (조건) { 조건 결괏값이 true일 때 실행할 명령 }
if (조건) { 조건 결괏값이 true일 때 실행할 명령 } else { 조건 결괏값이 false일 때 실행할 명령 }<script> var userNumber = prompt("숫자를 입력하세요."); if(userNumber !== null) { //입력값이 유효하면 if (userNumber % 3 === 0) { alert("3의 배수입니다."); } else { alert("3의 배수가 아닙니다."); } } </script>
프롬프트 창에서 취소 버튼 누르면 변수에는 null이 저장된다.
따라서 usernumber가 null인지 아닌지 확인해야한다.
만약조건이 한개이고 true일때와 false일때 실행 할 명령이 각각 하나뿐이라면 if~else문 대신에 조건 연산자를 사용하는 것이 간단하다.
(조건) ? true일 때 실행할 명령 : false일 때 실행할 명령
<script>
var userNumber = prompt("숫자를 입력하세요.");
if(userNumber !== null)
(userNumber % 3 ===0) ? alert("3의 배수입니다.") : alert("3의 배수가 아닙니다.");
else
alert("입력이 취소됐습니다.");
</script>
조건을 2개 이상 체크할 경우. 두 조건이 true일 경우와 조건 1개만 true일 경우처럼 여러 경우의 수를 따질 때
<script>
var numberOne = prompt("50미만의 숫자를 입력하세요.");
var numberTwo = prompt("50미만의 숫자를 입력하세요.");
if (numberOne < 10 || numberTwo < 10)
alert("두 개의 숫자 중 최소한 하나는 10 미만이군요.");
else
alert("두 개의 숫자 중 10 미만인 수는 없습니다.");
</script>
<script>
var numberOne = prompt("50미만의 숫자를 입력하세요.");
var numberTwo = prompt("50미만의 숫자를 입력하세요.");
if (numberOne < 50 && numberTwo < 50)
alert("두 개의 숫자 모두 50 미만이군요.");
else
alert("조건에 맞지 않는 숫자가 있습니다.")
</script>
<script>
var numberOne = prompt("50미만의 숫자를 입력하세요.");
var numberTwo = prompt("50미만의 숫자를 입력하세요.");
if (numberOne !== null && numberTwo !== null) {
if (numberOne < 10 || numberTwo < 10)
alert("두 개의 숫자 중 최소한 하나는 10 미만이군요.");
else
alert("두 개의 숫자 중 10 미만인 수는 없습니다.");
}
else {
alert("50 미만의 숫자를 입력하세요.");
}
</script>
처리할 명령이 많을 때는 if~else 보다 swiych문 사용
switch (조건) { case 값1: 명령1 break case 값1: 명령2 break case 값1: 명령3 break .... default: 명령n //조건과 일치하는 case문이 없을때, break는 쓰지 않음 }
<script>
var session = prompt("관심 세션을 선택해 주세요. 1-마케팅, 2-개발, 3-디자인");
switch (session) {
case "1" : document.write("<p>마케팅 세션은 <strong>201호</strong>에서 진행됩니다.</p>")
break;
case "2" : document.write("<p>개발 세션은 <strong>203호</strong>에서 진행됩니다.</p>");
break;
case "3" : document.write("<p>디자인 세션은 <strong>205호</strong>에서 진행됩니다.</p>")
break;
default: alert("잘못 입력했습니다.");
}
</script>
for문은 초깃값과 반복 크기가 일정할 경우 주로 사용
ex)0~9를 차례대로 반복사용 for(i = 0; i < 10; i++)
while문과 do~while문은 초깃값이나 반복 크기 없이 조건만 주어졌을 때
for(초깃값; 조건; 증가식) { 실행할 명령 }조건-> 명령 -> 조건식 순으로 실행
<script>
var i;
var sum = 0;
for(i = 1; i < 6; i++) {
sum += i;
}
document.write("1부터 5까지 더하면 " + sum);
</script>
안쪽 for문 -> 바깥 for문
<script>
var i, j;
for (i = 1; i <= 9; i++){
document.write("<div>");
document.write("<h3>" + i + "단</h3>")
for (j = 1; j <= 9; j++) {
document.write(i + "x" + j + "=" + i*j + "<br>");
}
document.write("</div>")
}
</script>
조건을 체크하고 true라면 실행
-조건이 flase라면 명령을 한번도 실행하지 않을 수 있다.
let 변수 = 초깃값; while (조건) { 실행할 명령 증감식; }
일단 명령을 실행 한 후 조건 체크
-조건이 false여도 명령은 최소 한번은 실행
do { 실행할 명령 } while (조건)
while문으로 팩토리얼 만들기
<script>
var n = prompt("숫자를 입력하세요.);
var msg = "";
if (n !== null) { // '취소' 버튼을 누르지 않았는지 체크
var nFact = 1; // 결과 값
var i = 1; // 카운터
while(i <= n) {
nFact *= i;
i++;
}
msg = n + "! = " + nFact; // 결과 값을 표시할 문자열
}
else
msg = "값을 입력하지 않았습니다.";
document.write(msg); // 결과 표시
</script>
조건이 종료되기 전에 반복문을 빠져나와야 할 경우 사용
<script>
var i, j;
for (i = 1; i <= 9; i++) {
document.write("<div>");
document.write("<h3>" + i + "단</h3>");
for (j = 1; j <= 9; j++) {
document.write(i +" X " + j + " = " + i*j + "<br>");
}
document.write("</div>");
if(i === 3) break;
}
</script>
주어진 조건에 해당하는 값을 만나면 해당 반복문을 건너뜀. 반복문의 맨 앞으로 되돌아가며 다음 과정으로 넘어가도록 한다.
1부터 10까지 짝수만 더하기
<script>
var i;
var n = 10;
var sum = 0;
for (i = 1; i <= n; i++) {
if (i % 2 === 1)
continue
sum += i;
document.write(i + " ------ " + sum + "<br>");
}
</script>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>자리 배치도</title>
<style>
table, td {
border:1px solid #ccc;
border-collapse: collapse;
}
td {
padding:5px;
font-size:0.9em;
}
</style>
</head>
<body>
<h1>자리 배치도</h1>
<script>
var i, j;
var memNum = prompt("입장객은 몇 명인가요?"); // 전체 입장객
var colNum = prompt("한 줄에 몇 명씩 앉습니까?"); // 한 줄에 앉을 사람
if (memNum % colNum == 0)
rowNum = parseInt(memNum / colNum);
else
rowNum = parseInt(memNum / colNum) + 1;
// document.write("모두 " + rowNum + "개의 줄이 필요합니다.");
document.write("<table>");
for (i = 0; i < rowNum; i++) {
document.write("<tr>");
for (j = 1; j <= colNum; j++) {
seatNo = i * colNum + j; // 좌석 번호
if (seatNo > memNum) break;
document.write("<td> 좌석 " + seatNo + " </td>");
}
document.write("</tr>");
}
document.write("</table>");
</script>
</body>
</html>
함수를 선언히고 함수 이름을 적어 호출하면 실행이 가능하다.
함수 선언 예약어는 function을 사용하고 , ()안에 실핼할 여러 명령을 넣는다.
function 함수명() { 명령 }
자바스크립트가 함수를 해석할 때 함수 선언을 먼저 헤석해서, 함수 선언 위치는 프로그램에 영향을 주지 않는다.
var이 있는데 let/const이 있는 이유
변수의 scope
변하지 않으르 값을 변수로 선언할 때 사용
블록 스코프이며 ,재선언 재할당 안됨
1) 전역변수는 최소한으로
2) var변수는 함수의 시작 부분에서만 선언
내부 호이스팅 오류 줄일 수 있다
3) for문에서 카운터 변수를 사용할 때 var예약어 사용하지 않기
4) var보다 let사용하기
addNumber() 안에 num1,num2가 매개 변수
addNumber(2, 3)처럼 함수를 실핼 할 때 괄호안에 넣은 숫자를 인수라고 한다.
<script>
function addNumber(num1, num2){
var sum = num1 + num2;
return sum;
}
var result = addNumber(2, 3); //함수 호출
document.write("두 수를 더 한 값 : " + result);
//document.write(`두 수를 더 한 값, ${result}`);
</script>
소스 간단하게
<script>
function addNumber(num1, num2){
return num1 + num2;
}
var result = addNumber(2, 3);
document.write("두 수를 더 한 값 : " + result);
</script>
<script>
var sum = function(a, b){
return a + b;
}
document.write("함수 실행 결과 : " + sum(10, 20) );
</script>
(function() { 명령 }());(function() { var userName = prompt("이름을 입력하세요."); document.write("안녕하세요? <span class='accent'>" + userName + "</span>님!"); }()); </script>
매개변수가 있는 즉시 실행 함수
(function(매개변수) { 명령 }(인수));
익명 함수에서만 사용가능
(매개변수) => {함수 내용}
- 매개변수가 없는 경우
const hi = () => {return "안녕하세요" }; const hi = () => "안녕하세요?"; //중괄호 생략
- 매개변수가 1개인 경우
let hi = function(user) { document.write(user + "님, 안녕하세요?"); } let hi = user => {document.write(user + "님, 안녕하세요"); }
- 매개변수가 2개 이상인 경우
let sum = function(a, b) { return a + b; } let sum (a,b) => a + b;

<태그 on이벤트명 = "함수명">