함수(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

 

 

+ Recent posts