사용자 정의 함수

Mia Lee·2021년 11월 26일
0

Java Script

목록 보기
6/25
<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>
























0개의 댓글