함수
함수에는 코드를 저장하고 필요할 때마다 호출해서 사용할 수 있다. function이라는 키워드를 이용해 선언하고 출력문, 제어문등의 코드를 저장하고 데이터를 반환한다.
선언적 함수
변수를 선언하고 함수에 코드를 저장할 수 있다. 함수에서는 function키워드로 변수를 선언하며 저장된 코드는 바로 실행되지 않고 함수를 호출해야 실행된다.
기본형
function 함수명(){
자바스크립트 코드;
}
자바스크립트 코드;
}
예제
<script>
var count = 0;
//함수 호출문이 먼저 나와도 호이스팅 방식이 적용되어 정상적으로 함수가 호출됨
myFnc(); //hello1
function myFnc(){
count++;
document.write("hello" + count, "<br>");
}
myFnc(); //hello2
var theFnc = function(){
count++;
document.write("bye" + count, "<br>")
}
theFnc(); //bye3
</script>
익명 함수
자바스크립트 익명 함수는 함수명 대신 변수명에 함수 코드를 저장하는 구현 방식이다. 익명 함수의 소스 코드는 변수값이므로 끝에 세미콜론 (;) 을 대입한다. 익명 함수는 호출시 변수명을 함수명처럼 사용하면 된다.
기본형
참조 변수=function(){
자바스크립트 코드;
}
자바스크립트 코드;
}
<script>
let study = function(){
document.write("javascript");
}
study(); //javascript
</script>
매개변수 함수
기본 함수에서는 코드를 실행할 때 함수명으로 호출해서 코드를 실행했다. 즉, 함수를 호출할 때 값을 전달할 수 없었다. 하지만 매개변수 함수는 함수를 호출할 때 전달하고자 하는 값을 입력하여 호출할 수 있다.
기본형
function 함수명(매개변수 1, 매개변수 2, ... 매개변수 n){
자바스크립트 코드;
} 함수명(데이터 1, 데이터 2, ... 데이터 n);
자바스크립트 코드;
} 함수명(데이터 1, 데이터 2, ... 데이터 n);
예제
<script>
function myFnc(name, area){
document.write("안녕하세요." + name + "입니다.", "<br>");
document.write("사는 곳은" + area + "입니다.", "<br><br>");
}
myFnc("홍당무", "서울") //안녕하세요. 홍당무입니다.
//사는 곳은 서울입니다.
myFnc("깍두기", "부산") //안녕하세요. 깍두기입니다.
//사는 곳은 부산입니다.
</script>
리턴값 함수
return 문은 함수에서 결괏값을 반환할 때 사용한다. 그리고 함수에서 return 문이 실행되면 반복문의 break 문과 비슷하게 코드가 종료된다.
기본형
function 함수명(){
자바스크립트 코드1;
return 데이터(값);
자바스크립트 코드2;
}
var 변수 = 함수명(); //자바스크립트 코드1을 실행한 후 코드2를 무시하고 데이터를 반환
자바스크립트 코드1;
return 데이터(값);
자바스크립트 코드2;
}
var 변수 = 함수명(); //자바스크립트 코드1을 실행한 후 코드2를 무시하고 데이터를 반환
예제 1
<script>
function testAvg(arrData){ //arrData = ["국어", "영어"]
var sum = 0;
for (var i = 0; i < arrData.length; i++){
sum += Number(prompt(arrData[i] + "점수는?", "0"));
}
var avg = sum/arrData.length;
return avg;
}
var arrSubject = ["국어, 수학"];
var result = testAvg(arrSubject);
document.write("평균 점수는 " + result + "점입니다");
</script>
예제 2
<script>
var num = 1;
function gallery(direct){
if(direct){
if(num == 8) return;
num++
} else {
if(num == 1) return;
num--;
}
var imgTag = document.getElementByld("photo");
imgTag.setAttribute("src", "images/pic_" + num + ".jpg");
}
</script>
</head>
<body>
<div id= "galleryZone>
<p><img src="images/pic_1.jpg" id="photo" alt=""></p>
<p>
<button onclick="gallery(0)>이전</button>
<button onclick="gallery(1)>다음</button>
</p>
</div>
</body>