WEB/자바스크립트

자바스크립트 함수

Goblebin 2022. 3. 29. 23:33
반응형

함수 호이스팅(hoisting)

전역변수로 설정된 변수를 함수내부에서 다시 변수를 선언할 경우 함수가 실행될 때 그 변수는 초기화된다.?

예를 들어

var a = 10;
function abc() {
    document.write("a의 값은 " + a + "입니다."); //a -> undefined값이 된다.
    var a = 20; //함수가 실행될 때 var a; 가 실행되는것과 다름없다.
    document.write("a의 값은 " + a + "입니다."); //a -> 20이 된다.
}

아래의 경우는 정상적으로 작동한다.

var a = 10;
function abc() {
    document.write("a의 값은 " + a + "입니다."); //a -> 10이 된다.
    a = 20; //a를 다시 선언하지 않고 값만 바뀌었다.
    document.write("a의 값은 " + a + "입니다."); //a -> 20이 된다.
}

함수에서 매개변수를 받을 때 지정된 매개변수보다 적은 인수를 받으면 남은 매개변수는 undefined로 설정됨.

function abc(a, b, c) {
    console.log(""+a+b+c);
}
abc(1, 2, 3);    //123
abc(1, 2);       //12undefined
abc(1);          //1undefinedundefined
abc();           //undefinedundefinedundefined

아래 처럼 설정할 수 있음.

function abc(a, b, c) {
    if(a==undefined) {
        a=0;
    }
    if(b==undefined) {
        b=0;
    }
    if(c==undefined) {
        c=0;
    }
    console.log(a+b+c);
}
abc(1, 2, 3); //6
abc(1, 2); //3
abc(1); //1
abc(); //0

함수 arguments

모든 함수는 입력받는 인자를 arguments라는 객체에 배열형식으로 저장함.

예를들어

function abc() {
    var a=0, sum=0;
    for(a=0; a
        sum += arguments[a];
    }
    console.log(sum);
}
abc(1, 2, 3);    //6
abc(1, 2);       //3
abc(1);          //1
abc();           //0

디폴트 매개변수

함수에 지정된 매개변수보다 적은 인수를 받으면 지정받지 못한 매개변수에 값을 넣을 수 있다.

function abc(a, b, c=1) {          //지정받지 못한 c에는 1이 들어간다.
    var a=0, sum=0;
    for(a=0; a
        sum += arguments[a];
    }
    console.log(sum);
}
abc(1, 2); //3

나머지 매개변수

// 첫 번째 인수를 변수 firstNum에 저장하고 나머지 인수들은 배열 restArgs에 저장함.
function sub(firstNum, ...restArgs) {             // ...접두사를 사용한다.
    for(var i = 0; i < restArgs.length; i++) {
        firstNum -= restArgs[i];
    }
    return firstNum;
}
sub(10, 2, 3); // 10 - 2 - 3 = 5
sub(10, 1, 5, 8); // 10 - 1 - 5 - 8 = -4

 


미리 정의된 전역함수들

https://www.tcpschool.com/javascript/js_function_predefinedFunction

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

한 번 살펴보기만 하는게 좋을 것 같다.

 

별로 중요하지 않은 내용에 시간을 많이 투자한 느낌이 들어서 아쉽다.

그래도 시간을 많이 들인만큼 공부한 내용을 잊지 않았으면 좋겠다.

 

반응형