๋จ์ถ์์ฑ๋ช
property shorthand
// ์์
const name = 'song'; // name ์ด๋ผ๋ ๋ณ์์ 'song'์ ํ ๋นํ๊ณ ;
const age = 28; // age ๋ผ๋ ๋ณ์์๋ 28์ ํ ๋นํ์ ๋,
const obj = {
name:name // ์์ ํ ๋นํ ๋ณ์๋ฅผ value ์๋ฆฌ์ ๋ฃ์ด์ค.
age:age // ์์ ํ ๋นํ ๋ณ์๋ฅผ value ์๋ฆฌ์ ๋ฃ์ด์ค.
};
// ๋ผ๊ณ obj์ ๊ฐ์ ํ ๋นํ๋ฉด,
console.log(obj); // ์ฝ์๋ก ์ฐ์์ ๋,
//์ถ๋ ฅ๊ฐ
{ name: 'song', age: 28 } // ์ด์ ๊ฐ์ด ์ถ๋ ฅ์ด ๋๋ค.
์๋ ๊ฐ์ฒด์ ์ฑ์ง์์, key-value์ pair๋ก ์ด๋ฃจ์ด์ง ๊ฐ์ฒด์ value ์๋ฆฌ์๋ ํจ์๋ ๋ค์ด๊ฐ ์ ์๊ณ , ๋ณ์๋ ๋ค์ด๊ฐ ์ ์์ผ๋ฉฐ, ๋ค์ด๊ฐ ์ ์๋ ์กฐ๊ฑด์ ์ ํ์ด ์๋ค.
์ ๊ฐ์ฒด์ ์ฑ์ง์ ์ด์ฉํด์
name์ value ์๋ฆฌ์๋ 'song' ์ด๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ name์ด๋ผ๋ "๋ณ์"๋ฅผ ๋ฃ์ด์ค ๊ฒ์ด๊ณ ,
age์ value ์๋ฆฌ์๋ 28์ด๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ age๋ผ๋ "๋ณ์"๋ฅผ ๋ฃ์ด์ค ๊ฒ์ด๋ค.
์์ ๊ฐ์ด key ์ value์ ์ด๋ฆ์ด ๊ฐ์ผ๋ฉด, ์ฌ๊ธฐ์ "๋จ์ถ์์ฑ๋ช "์ ์ฌ์ฉํ ์๊ฐ ์๋ค.
// ๋จ์ถ์์ฑ๋ช
์ฌ์ฉํ ์ฝ๋
const name = 'song';
const age = 28;
const obj = { name, age }; // key์ value์ ์ด๋ฆ์ด ๊ฐ์ผ๋ฏ๋ก ๊ณผ๊ฐํ ์๋ตํด์ ์ฌ์ฉํ๋ค.
console.log(name, age); // 'song', 28
console.log(obj); // {name :'song',age : 28}
์ ๊ฐ๊ตฌ๋ฌธ
spread operator
(1). ๋ฐฐ์ด์์์ ์ ๊ฐ๊ตฌ๋ฌธ
์ฌ์ฉ๋ฐฉ๋ฒ : ๋ฐฐ์ด๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ์ ์ด๋ฆ ์์ ... ์ ์จ์ค๋ค.
// ๋ฐฐ์ด์ ์ ๊ฐ๊ตฌ๋ฌธ
// ... = spread operator
let arr = [1, 2, 3]; // ๋ฐฐ์ด์ ํ๋ ์ ์ธํด์ ๊ฐ์ ํ ๋นํ๊ณ ,
console.log(arr); // ๊ทธ ๊ฐ์ ์ฝ์๋ก ์ฐ๋๋ค.
console.log(...arr); // ๊ทธ ๊ฐ์ ...์ผ๋ก ์ ๊ฐ๋ฅผ ์์ผ์, ์ฝ์๋ก ์ฐ๋๋ค.
// ์ถ๋ ฅ๊ฐ
[ 1, 2, 3 ]
1 2 3
์ ๊ฐ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด์ ์ด๋ ํ ๊ฐ์ push ํ์ง ์๊ณ , ์๋์ ๊ฐ์ด ๊ฐ์ ์ถ๊ฐ ํด ์ค ์ ์๋ค.
let newArr = [...arr, 4]; // spread operator๋ฅผ ์ฌ์ฉํด arr์ ์์๊ฐ์ ๋ฐฐ์ด์ ๋ฒ๊ฒจ์ฃผ๊ณ , 4๋ผ๋ ์์๋ฅผ ๋ฐฐ์ด์์ ์ถ๊ฐํด ์๋ก์ด ๋ฐฐ์ด newArr์ ํ ๋นํ๋ค.
console.log(newArr); // ์ฝ์๋ก ํ์ธํด๋ณด๋ฉด
// ์ถ๋ ฅ๊ฐ
[ 1, 2, 3, 4 ] // ๋ฐฐ์ดํ๋์ ์ ๋ค์ด๊ฐ์๋๊ฒ์ ํ์ธํ ์ ์๋ค.
(2). ๊ฐ์ฒด์์์ ์ ๊ฐ๊ตฌ๋ฌธ
// ๊ฐ์ฒด์์์ ์ ๊ฐ๊ตฌ๋ฌธ
let user = {
name: 'song',
age: 28,
}; // user๋ผ๋ ๊ฐ์ฒด๋ฅผ ํ๋ ๋ง๋ค๊ณ ,
let user2 = { ...user }; // user2๋ผ๋ ๋ณ์๋ฅผ ์ ์ธํด์ ๊ทธ ๊ฐ์ {}์์ user๋ฅผ ์ ๊ฐ์์ผ์ฃผ๊ณ ์ฝ์๋ก ํ์ธํด๋ณด๋ฉด
console.log(user);
console.log(user2);
// ์ถ๋ ฅ๊ฐ
{ name: 'song', age: 28 } // = user
{ name: 'song', age: 28 } // = user2
์์๊ฐ์ด ์๋กญ๊ฒ ๊ฐ์ ํ ๋นํ๊ณ , ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๊ณ , ๋ฌด๊ถ๋ฌด๊ตฌ์งํ ๋ฐฉ๋ฉด์ผ๋ก ์ ๊ฐ๊ตฌ๋ฌธ์ ํ์ฉ์ด ๊ฐ๋ฅํ๋ค.
๋๋จธ์ง ๋งค๊ฐ๋ณ์
rest parameter
// rest parameter
function example(a, b, c, ...args) {
console.log(a, b, c);
console.log(...args);
console.log(args);
}
example(1, 2, 3);
example(1, 2, 3, 4, 5, 6, 7);
// ์ถ๋ ฅ๊ฐ
// example(1, 2, 3)์ ์ถ๋ ฅ๊ฐ
1 2 3 // console.log(a, b, c)
// console.log(...args)
[] // console.log(args)
// example(1, 2, 3, 4, 5, 6, 7)์ ์ถ๋ ฅ๊ฐ
1 2 3 // console.log(a, b, c)
4 5 6 7 // console.log(...args)
[ 4, 5, 6, 7 ] // console.log(args)
์์์ example์ด๋ผ๋ ํจ์์ ๊ฐ์ ๋ฃ์ด ์คํ์ํจ ์ถ๋ ฅ๊ฐ์ผ๋ก๋ถํฐ ์ ์ ์๋ ๋ด์ฉ๋ค์ด ์๋ค.
- a,b,c ์ ๋งค์นญ๋๋ ๋งค๊ฐ๋ณ์์ ์๊ฐ ๊ทธ ์ด์์ผ๋ก ๋์ด๊ฐ๋ฉด, ...args๊ฐ ๊ทธ ๋งค๊ฐ๋ณ์๋ค์ ๋์ ํ์ฌ ๋ฐ์์ฃผ๊ณ , ๊ฒฐ๊ณผ๊ฐ์ ์ ์์ ์ผ๋ก ์ถ๋ ฅํด์ค๋ค.
- args๋ฅผ spread operator๋ฅผ ์ฌ์ฉํ์ง ์์์ฑ ์ฝ์๋ก ๊ฐ์ ์ถ๋ ฅํ๋ฉด, "๋ฐฐ์ด"์ ํํ๋ฅผ ์ง๋๊ณ , args์ ๋ค์ด์จ ๋งค๊ฐ๋ณ์์ ๊ฐ๋ค์ "๋ฐฐ์ด"์ "์์"๋ก ์ ์ฅ๋๋ค.
- console.log(...args)๋ฅผ ์ถ๋ ฅํ์ ๋, ๋ค์ด์ค๋ ๋งค๊ฐ๋ณ์๊ฐ ์์ผ๋ฉด, undefined๊ฐ ์๋, ๊ณต๋์ด ์ถ๋ ฅ๋๋ค. args๊ฐ ๋น ๋ฐฐ์ด์ ๋ํ๋ด๋ ๊ฑธ๋ก ๋ณด์์ ๋, ๋ฐฐ์ด์ ์์๊ฐ์ด undefined๋ ์๋๋ชจ์์ด๋ค.
ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด
Template Literal
``
console.log(`hello world ${3 + 3}`); // ${} ๊ดํธ ์์๋ javascript์ ๊ฑฐ์ ๋ชจ๋ ๋ฌธ๋ฒ์ด ๋ค์ด์ฌ ์ ์๋๊ฒ ๊ฐ๋ค.
const all = 'vincenjo'; // all ์ด๋ผ๋ ๋ณ์์ ๋น์ผ์กฐ๋ผ๋ ๊ฐ์ ํ ๋นํ๊ณ ,
console.log(`hello ${all}`); // ${}๊ดํธ์์ ๋ณ์์ ๊ฐ์ ๋ฃ์ด์ค๋ค.
console.log(` // ``๋นฝํฑ์ ๊ต์ฅํ ์ ์ฉํ ๋ฉํฐ๋ผ์ธ์ ์ง์ํด์ค๋ค.
์ด ์ธ์ ์์ ๋ด๊ฐ์๊ณ ,
๋๋ฅผ ์ฌ๋ํด์ฃผ๋
๋์ ์ฌ๋๋ค๊ณผ ~
๋์ ๊ธธ์๊ฐ๊ณ ์ถ์ด ~~.
๋๋ ๋ฌธ์ ์์ด -ํฉ๊ท์-
`);
// ์ถ๋ ฅ๊ฐ
hello world 6
hello vincenjo
์ด ์ธ์ ์์ ๋ด๊ฐ์๊ณ ,
๋๋ฅผ ์ฌ๋ํด์ฃผ๋
๋์ ์ฌ๋๋ค๊ณผ ~
๋์ ๊ธธ์๊ฐ๊ณ ์ถ์ด ~~.
๋๋ ๋ฌธ์ ์์ด -ํฉ๊ท์-
ES6๋ฌธ๋ฒ ์ค 4๊ฐ๋ฅผ ์ ๋ฆฌํด๋ณด์๋ค.
์ 4๊ฐ์ ๋ฌธ๋ฒ๋ค์ javascript์ ๊ฐ ์ ๋ฌธํ ๋์กฐ์ฐจ๋ ๊ต์ฅํ ๋ง์ด ์ฌ์ฉํ๋ ๋ฌธ๋ฒ๋ค์ด๋ค.
ํนํ ๋นฝํฑ์ ๋๊ธ๊ธฐ๋ฅ ๊ด๋ จํด์ ํ๋ก ํธ์ ์์ฑ๋ ๋๊ธ๋ค์ ๋ณด์ฌ์ฃผ๋ ์ฉ๋๋ก ๊ต์ฅํ ์ ์ฉํ๊ฒ ์์ฉํ๋ค.
const comment = document.querySelector("#comment");
comment.innerHTML = data
.map((review, index) => {
// review๋ ๋ฆฌ๋ทฐ๊ฐ์ฒด, index๋ data์์์ ์ธ๋ฑ์ค
let { writer, contents } = review; // ๊ตฌ์กฐ๋ถํดํ ๋น : ๋ฆฌ๋ทฐ์ writer, contents ์์ฑ์ ๊ฐ์ ๋ณ์์ ํ ๋น
if (!writer) writer = "์ด๋ฆ์ด ์์ต๋๋ค.";
if (!contents) contents = "๋ด์ฉ์ด ์์ต๋๋ค."; // validation check
return `<li class="review" data-number="${index}">
<p class="comment-contents">${contents}</p>
<p class="comment-writer">์์ฑ์: ${writer}</p>
<div>
<button class="update">์์ </button>
<button class="delete">์ญ์ </button>
<div>
</li>`
์์ ์ฝ๋์ ๊ฐ์ด ``๋นฝํฑ์์ ํน์ html์ ๊ฐ์ ธ์ ๋ด์์ฃผ๊ณ ${} ๊ดํธ์์๋ ๋ณ์์ ๊ฐ์ ๋ฃ์ด์ฃผ์ด์, ๊ตฌํ์ํค๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋์ ์ค๋์ ES6์ ์ด 4๊ฐ์ง๋ฌธ๋ฒ์ ํ ๋ฒ ์ ๋ฆฌํด ๋๊ณ ์ถ์๋ค.
args์ ๊ฐ์ด spread operator๋ฅผ ์ฌ์ฉํ์ง ์์์ฑ ์ถ๋ ฅํ๋ฉด, ๋ฐฐ์ด์ ๊ฐ์ผ๋ก ๋ฐ๋๋ค๋ ๊ฒ๋ ์ฒ์ ์๊ฒ ๋์๋ค.
๊ด๋ จํด์ ๋ช ๊ฐ์ง ์ฝ์ง์ ํด๋ณด์์ผ ๊ฒ ๋ค.
#์๋ฐ์คํฌ๋ฆฝํธ #ES6๋ฌธ๋ฒ #property_shorthand #spread_operator #rest_parameter #args #array #template_literal #๋นฝํฑ
#๋จ์ถ์์ฑ๋ช ์_key์_value์_๋ช ์ด๊ฐ์ผ๋ฉด_๊ทธ๋_์ฌ์ฉ์ด_๊ฐ๋ฅํ๋ค
'JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] : tirm() (0) | 2023.07.14 |
---|---|
[JavaScript] : TypeError: Converting circular structure to JSON ์ค๋ฅํด๊ฒฐ (0) | 2023.06.14 |
[JavaScript] : ๊ตฌ์กฐ๋ถํด ํ ๋น [๋ฐฐ์ด], {๊ฐ์ฒด}, ์๋ก์ด ๊ฐ์ผ๋ก์ ํ ๋น. (0) | 2023.06.08 |
[JavaScript] : localStorage 'data' ์ญ์ ๊ธฐ๋ฅ ๊ตฌํํด๋ณด๊ธฐ. (0) | 2023.06.06 |
[JavaScript] : Import / Export ๋ชจ๋ ์ฌ์ฉ ๋ฐฉ๋ฒ. (0) | 2023.06.05 |