JavaScript/생활코딩

자바스크립트 기본 - 함수의 호출

점미 2018. 12. 5. 14:29



함수의 호출 - https://opentutorials.org/course/743/6550



아래는 기본적으로 함수를 정의하고 호출하는 방법


function func(){

}

func();






아래는 함수를 호출하는 특이한 방법이다.


function sum(arg1, arg2){

    return arg1+arg2;

}

alert(sum.apply(null, [1,2]))      // sum은 함수이기때문에 자바스크립트가 가지고 있는 메소드를 가질 수 있다. apply는 자바스크립트의 내장메소드이다. sum.apply(null, [1,2])을 사용하면 sum(1,2)으로 함수를 호출한 것과 같은 결과이다.


sum.apply(null, [1,2]) 이것은 sum(1,2) 이것과 같은 결과 이므로 간단하게 함수를 호출할때는 사용하는 것을 권장하지 않는다.

예제를 통해 다른방법으로 함수를 호출할 수 있다는 것만 보여주는 것이다.





아래 예제를 통해 apply를 사용하는 이유를 알 수 있다.


//o1, o2는 객체이다.

o1 = {val1:1, val2:2, val3:3}         

o2 = {v1:10, v2:50, v3:100, v4:25}

function sum(){

    var _sum = 0;

    for(name in this){     //sum함수 내에서는 this가 정해지지 않고, sum함수가 호출될때 this가 정해진다sum.apply를 호출 하면 인자로 준 o1객체가 this가 된다.

        _sum += this[name];

    }

    return _sum;

}

alert(sum.apply(o1)) // 6, apply(null)에서 null값에 o1객체를 넣은 것이다. 해당 코드가 호출되면 o1객체의 값들을 다 더하는 뜻과 같은 의미가 된다.

alert(sum.apply(o2)) // 185