DBILITY

독거 가능성 100% 노후에 라면값이라도 하게 센스를 발휘합시다!😅
Please click on the ad so that I can pay for ramen in my old age!
点击一下广告,让老后吃个泡面钱吧!
老後にラーメン代だけでもするように広告を一回クリックしてください。

javascript es6 function default, rest parameter 본문

front-end & ui/javascript

javascript es6 function default, rest parameter

DBILITY 2021. 10. 28. 11:25
반응형

독거 가능성 100% 노후에 라면값이라도 하게 광고 한번씩 클릭하시오! 싫어? 꺼져~!

Please click on the ad so that I can pay for ramen in my old age!
老後にラーメン代だけでもするように広告を一回クリックしてください。
点击一下广告,让老后吃个泡面钱吧!

function multiply(a, b = 1 * a) {
    return a * b
}

function sum(a, b = multiply(a)) {
    console.log(arguments);
    let s = 0;
    for (let key in arguments) {
        s+=arguments[key];
    }
    console.log(s);
}

sum(1);
sum(1, 2);
sum(...[1, 2]);

함수의 parameter개수와 일치하지 않게 입력이 될 때 기본값을 줄 수 있고, 기본값은 함수도 된다.

첫 번째 sum(1)의 실행 과정 중 두 번째 인자가 입력되지 않았고 두 번째 인자의 기본값은 함수이므로 기본값 함수를 실행하지 않아 결과는 첫 번째 인자만의 합이 된다.

sum함수 내의 arguments는 es5형식으로 입력된 parameter의 배열이다. 3번째 sum(... [1,2])는 parameter로 배열을 전개(spread)하여 넘긴 것으로 2번째와 결과는 동일하다.

function sum2(a,b,...args) {
    args.forEach(function (a,i) {
        console.log(a,i);
    });
}

sum2(1, 2, 3, 4, 5);

함수 parameter가 가변적일 경우 ... (Rest parameter)를 쓸 수 있다. spread operator와 다른 점은 함수의 parameter자리에 쓴다는 것이다. sum2에서 지정된 parameter a, b 이외에 추가적으로 입력된 parameter를 array [ 3, 4, 5]로 반환한다.

반응형

'front-end & ui > javascript' 카테고리의 다른 글

javascript constructor function  (0) 2021.10.29
javascript es6 class  (0) 2021.10.28
javascript es6(es2015) spread operator, function apply, call, bind  (0) 2021.10.28
javascript deep copy  (0) 2021.10.25
javascript array sort exercise  (0) 2021.10.19
Comments