[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
2023-02-21
2022-11-09