[js] Default parameters of function & Spread syntax in object literals

2023-02-09

function ๊ฐœ๋ฐœ ์‹œ ๊ธฐ๋ณธ๊ฐ’ ๋งค๊ฐœ๋ณ€์ˆ˜ ์‚ฌ์šฉ(Default Parameters)๊ณผ object literals ์—์„œ ์ „๊ฐœ ๊ตฌ๋ฌธ(Spread syntax)

Default Parameters

  • ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ •์˜๋˜์—ˆ์œผ๋‚˜ ํ˜ธ์ถœ ์‹œ undefined๊ฐ€ ๋„˜๊ฒจ์ง€๋Š” ๊ฒฝ์šฐ.
    1function func1(value1 = 1){
    2  return value1;
    3}
    4func1();  //1
    5func1(3); //3
    • ์•„๋ž˜์™€ ๊ฐ™์ด undefined์ธ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
    1function func1(value1){
    2  return value1 || 1;
    3}
    4func1();  //1
    5func1(3); //3
  • ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ ์•ž์ชฝ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋’ท์ชฝ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ •์˜ํ•˜๋Š”๋ฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    1function func2(value1, value2 = value1*10){
    2  return value1+value2;
    3}
    4func2(2);     //22
    5func2(2, 31); //33
    • ์•ž์ชฝ ๋งค๊ฐœ๋ณ€์ˆ˜์—๋งŒ ๊ธฐ๋ณธ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
    1function func2(value1 = 3, value2 = value1*10){
    2  return value1+value2;
    3}
    4func2(2);  //22
    5func2(31); //341
    6func2(undefined, 31); //34

Spread syntax in object literals

  • js๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ ํ•  ๋•Œ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ 2๋ฒˆ ์ด์ƒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‚˜์ค‘์— ์ž‘์„ฑ๋˜๋Š” ๊ฐ’์œผ๋กœ ์ตœ์ข… ํ• ๋‹น๋œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋Š” spread syntax๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.
    1const defaultObj = {
    2  prop1: 10,
    3  prop2: 'title'
    4};
    5const data1 = {
    6  prop1: 30,
    7  prop2: 'description',
    8  ...defaultObj
    9};
    10const data2 = {
    11  prop1: 40,
    12  ...defaultObj
    13};
    14const data3 = {
    15  ...defaultObj,
    16  prop1: 20,
    17  prop2: 'tags'
    18};
    19console.log(data1); //{prop1: 10, prop2: 'title'};
    20console.log(data2); //{prop1: 10, prop2: 'title'};
    21console.log(data3); //{prop1: 20, prop2: 'tags'};

ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์œ„์˜ ๋‘ ๊ฐœ๋…์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

  • ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ฐ์ฒด๋ฅผ ๋ฐ›๋Š” ๊ฒฝ์šฐ, ๊ฐ์ฒด์˜ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ์ผ๋ถ€๋งŒ ๋„˜๊ธฐ๊ณ  ๋‚˜๋จธ์ง€๋Š” ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    1let defaultObject = {
    2  prop1: 10,
    3  prop2: 'title
    4};
    5
    6function func3(obj = defaultObject){
    7  return {
    8    ...defaultObject,
    9    ...obj
    10  };
    11}
    12
    13func3({prop2: 'description'}); //{prop1: 10, prop2: 'description'}
/end of [js] Default parameters of function & Spread syntax in object literals
CONTENT LISTMERRI๏ผ‡s DEVELOG
Java Bean Mapping library ์ ์šฉ - MapStruct
2023-05-26