<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="./test6.js"></script>
<script type="text/javascript">
/*
사용자 정의 함수
- 자바스크립트에서 제공되는 함수 외에 개발자가 직접 정의하는 함수
- 자바의 메서드와 달리 리턴타입을 명시하지 않으며, 파라미터로 변수 지정은 거의 동일함
- <script> 태그 내의 자바스크립트 코드는 기본적으로 로딩 시점에서 바로 실행되지만
함수를 정의할 경우 호출되어야만 실행 가능함(호출하지 않고도 실행되는 함수도 있음)
< 함수 정의 기본 문법 >
function 함수이름([매개변수...]) {
// 외부로부터 함수가 호출되면 실행할 코드들...
}
*/
// showMessage(); // 함수 선언부보다 윗쪽에서 함수 호출도 가능함
// --------------------------------------------------------------------------------------
// showMessage() 함수 정의 => 파라미터 없음
function showMessage() {
// 파라미터 부분이 비어있으므로 함수 호출 시 전달받을 데이터는 없음
alert("showMessage() 함수 호출됨!"); // 이 코드는 showMessage() 함수가 호출되면 실행됨
}
// 함수 정의 후 <script> 태그 내의 아무 위치에서나 함수 호출하면 실행 가능
// showMessage() 함수 호출
// showMessage();
// --------------------------------------------------------------------------------------
// sum() 함수 정의 => 파라미터 없음
// => 1 ~ 10 까지 합을 반복문으로 계산하여 결과값(55)을 출력
function sum() {
var total = 0;
for(var i = 1; i <= 10; i++) {
total += i;
}
alert("total = " + total);
}
// sum() 함수 호출
// sum();
// 함수 내에서 선언된 변수(로컬변수 = 지역변수)에 대한 접근
// => 함수 외부에서 접근 불가능
// document.write("sum() 함수 내의 total = " + total); // 실행되지 못함
// -----------------------------------------------------------------
// 합계를 누적할 변수를 함수 외부에서 선언(전역 변수)
var total2 = 0;
// sum2() 함수 정의
// => 1 ~ 10 까지 1씩 증가하는 for문을 사용하여 합계를 total 에 누적 후 출력
function sum2() {
total2 = 0; // 함수 내에서 전역변수 초기화를 해야만 이전 누적값이 제거됨
for(var i = 1; i <= 10; i++) {
total2 += i;
}
alert("total2 = " + total2);
}
// sum2() 함수 호출
// sum2(); // 55
// 전역 변수는 함수 외부에서도 접근 가능
// document.write("sum2() 함수 외부의 전역변수 total2 = " + total2);
// 주의! 함수 외부에서 전역변수를 선언하여 사용하는 경우
// 반복된 함수 호출 시 전역변수의 값은 이전의 상태를 그대로 유지하므로
// 함수의 첫번째 호출 시 결과가 두번째 호출시에도 그대로 유지됨
// 따라서, 누적의 경우 이전 누적 결과가 남아있게 되므로 두번째 호출 시 누적값이 달라짐
// sum2(); // 110(이전 호출 시 55가 남아있었으므로 55가 더 누적되어 110이 됨)
// 결론!!
// 만약, 함수 내에서 전역 변수의 값을 변경하여 사용할 때
// 누적 등의 연산으로 인해 이전 결과를 포함하면 안되는 경우
// 함수 내부에서 누적변수(전역변수)를 초기화하는 코드를 명시해야한다!
// ===================================================================
// test6.js 파일 내의 checkNumGame() 함수 호출
checkNumGame();
</script>
</head>
<body>
</body>
</html>