함수(function) = 독립적인 블록이다.
function 함수이름식별자(매개변수1인수, 매개변수2인수,...) {
함수가 호출되었을 때 실행하고자 하는 실행문;
}
변수는 유효범위에 따라
1지역변수
2전역변수
지역변수의 범위일 지라도 var키워드를 쓰지않으면 해당변수는 전역변수로 자동 으로 변함
전역변수와 지역변수가 같은 이름이라도 둘은 다른 값을 가짐
var num = 10; // 전역 변수 num을 선언함.
function globalNum() {
var num = 20; // 같은 이름의 지역 변수 num을 선언함.
document.write("함수 내부에서 변수 num의 값은 " + num + "입니다.<br>"); // 20
}
globalNum(); // 함수 globalNum()을 호출함.
document.write("함수의 호출이 끝난 뒤 변수 num의 값은 " + num + "입니다."); // 10
함수 호이스팅(hoisting)
자바스크립트 함수안에 있는 모든 변수의 선언은 맨 처음으로 이동된 것 처럼 동작한다.
var globalNum = 10; // globalNum을 전역 변수로 선언함.
function printNum() {
document.write("지역 변수 globalNum 선언 전의 globalNum의 값은 " + globalNum + "입니다.<br>"); // ①
var globalNum = 20; // globalNum을 지역 변수로 선언함. // ②
document.write("지역 변수 globalNum 선언 후의 globalNum의 값은 " + globalNum + "입니다.<br>");
}
printNum();
1번의 globalNum이 전역변수를 가리키는 10이 나올것 같지만 undefine이 나온다
함수호이스팅으로 인해 var globalNum; 이 (변수의 선언 부분) 맨 처음 부분으로 이동된다.
var globalNum = 10;
function printNum() {
var globalNum; // 함수 호이스팅에 의해 변수의 선언 부분이 함수의 맨 처음 부분으로 이동됨.
document.write("지역 변수 globalNum 선언 전의 globalNum의 값은 " + globalNum + "입니다.<br>");
globalNum = 20;
document.write("지역 변수 globalNum 선언 후의 globalNum의 값은 " + globalNum + "입니다.<br>");
}
printNum();
바스크립트에서는 함수 호이스팅이 자동으로 수행되지만, 항상 함수 블록의 첫 부분에 변수를 선언하는 것이 좋습니다.
arguments 객체
arguments객체를 이용하면 함수로 전달된 인수의 총 개수를 학인하거나 각각의 인수에도 접근 가능
arguments 객체는 함수가 호출될 때 전달된 인수를 배열의 형태로 저장한다.
첫번째 인수는 arguments[0]에 저장되며 다음인수는 [1] 에 저장된다.
또한 인수의 총 갯수는 arguments 객체의 length 프로퍼티에 저장된다
function addNum() {
var sum = 0; // 합을 저장할 변수 sum을 선언함.
for(var i = 0; i < arguments.length; i++) { // 전달받은 인수의 총 수만큼 반복함.
sum += arguments[i]; // 전달받은 각각의 인수를 sum에 더함.
}
return sum;
}
addNum(1, 2, 3); // 6
addNum(1, 2); // 3
addNum(1); // 1
addNum(); // 0
addNum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // 55
'JavaScript' 카테고리의 다른 글
자바스크립트 객체(생성, 접근, 삭제) (0) | 2021.08.09 |
---|---|
javascript 문자열, 숫자 형변환 (0) | 2021.05.16 |
javascript 현재 날짜 구하기 (0) | 2021.05.16 |
자바스크립트의 변수 (0) | 2021.01.17 |
javascript (페이지 전역 클릭 감지) (0) | 2021.01.17 |