1 . ๋ฐ์ดํฐ ํ์ ์ ์ข ๋ฅ ๋ฐ ๋ณ์ ์ ์ธ๊ณผ ๋ฐ์ดํฐ ํ ๋น
์ด์ ๋ฐ์ดํฐ์ ํ์ ์ ๋ฐฐ์ ๋ค๋ฉด,
์ค๋์ ์ด์ ๋ฐฐ์ด ๋ฐ์ดํฐ ํ์ ์ ๋ ํฐ ๋ถ๋ฅ๋ก ๋ฌถ๊ณ , ๋ฐ์ดํฐ ํ์ ๊ณผ ๋ฉ๋ชจ๋ฆฌ์ ์๊ด ๊ด๊ณ์ ๋ํด ๊ณต๋ถํ๋ค.
๋ฐ์ดํฐ ํ์ ์ ํฌ๊ฒ ๊ธฐ๋ณธํ(primitive type)๊ณผ ์ฐธ์กฐํ(reference type)์ผ๋ก ๋๋ ์ ์๋๋ฐ,
๊ธฐ๋ณธํ์๋ Number, String, Boolean, null, undefined ๊ทธ๋ฆฌ๊ณ ES6์์ ์ถ๊ฐ๋ Symbol์ด ์๋ค.
์ฐธ์กฐํ์๋ Array, Function, Date, RegExp, Map, WeakMap, Set, WeekSet์ด ํฌํจ๋๋ค.
1-1. ๊ธฐ๋ณธํ
- ๊ฐ ์์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ
- ๋ถ๋ณ์ฑ์ ๋
์ ? ๊ทผ๋ฐ ๊ธฐ๋ณธํ ๋ฐ์ดํฐ๊ฐ ๋ถ๋ณ์ฑ์ ๋๋ค๋๊ฒ ๋ฌด์จ ๋ง์ด์ง?
let number = 3;
console.log(number); // 3
number = 5;
console.log(number); // 5
๋ณํ๋ ๊ฑฐ ์๋??
์ด๋ ๊ฒ ํท๊ฐ๋ฆด ์ ์๋๋ฐ ์ฌ๊ธฐ์ ๋งํ๋ ๋ถ๋ณ์ฑ ์ฌ๋ถ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด์ ์์ ๋ด์ผ ํ๋ค.
์์์ ๋ณ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ Stack ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ๋ก ์ ์ฅ๋๋ค.
ํด๋น ๋ณ์์ ํ ๋น๋ ๊ฐ์ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค.
์์ ์ฝ๋๋ฅผ ์์๋ก ๋ณด์๋ฉด,
1. number๋ Stack๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค.
2. 3์ด๋ผ๋ ๊ธฐ๋ณธํ Number Type์ ๋ฐ์ดํฐ๊ฐ Heap ๋ฉ๋ชจ๋ฆฌ์ @5002๋ผ๋ ์ฃผ์์ ์ ์ฅ๋๋ค.
3. ๋ณ์ number๋ @5002 ์ฃผ์๋ฅผ ์ฐธ์กฐํ๋ค.
4. number๋ฅผ ์ถ๋ ฅํ๋ฉด number์ ์ฐธ์กฐ๊ฐ์ธ @5002 ์ฃผ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ, ์ฆ 3์ด ์ถ๋ ฅ๋๋ค.
5. number์ 5๋ฅผ ์ฌํ ๋น -> ์๋ก์ด ๋ฐ์ดํฐ ์์ญ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ @5003์ 5๊ฐ ์ ์ฅ๋๋ค.
6. number์ ์ฐธ์กฐ๊ฐ์ด @5002 -> @5003์ผ๋ก ๋ณ๊ฒฝ๋๋ค.
7. number๋ฅผ ์ถ๋ ฅํ๋ฉด @5003์ ์ฐธ์กฐํ์ฌ 5๊ฐ ์ถ๋ ฅ๋๋ค.
๋ค์ ๋งํด number๋ผ๋ ๋ณ์์ ์ฐธ์กฐ๊ฐ์ด ๋ฌ๋ผ์ง ๊ฒ์ด์ง @5002์ ์ ์ฅ๋ ๋ฐ์ดํฐ 3์ด ๋ฐ๋ ๊ฒ์ด ์๋๋ค!
์ฆ ์์ ์์๋ ๋ณ์์ ์ฌํ ๋น(๋ณ์๊ฐ ์ฐธ์กฐํ๋ ์ฃผ์๋ฅผ ๋ณ๊ฒฝ)์ ํ ๊ฒ์ด์ง ๋ฐ์ดํฐ๊ฐ ๋ณํ ๊ฒ์ด ์๋๋ค.
(์ฐธ๊ณ ๋ก ๋ง์ฝ ๋์ด์ @5002๊ฐ ์ฌ์ฉ๋์ง ์๋๋ค๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ @5002๊ฐ ์๊ฑฐํด๊ฐ๋ค -> ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ)
1-2. ์ฐธ์กฐํ
- ๊ฐ์ด ์๋๋ผ ๊ฐ์ด ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅ
- ๊ฐ๋ณ์ ์
const object = {
name : 'Dana',
age : 30
};
console.log(object); // { name : 'Dana', age : 30 }
object['age'] = 29;
console.log(object); // { name: 'Dana', age : 29 }
์ฐธ์กฐํ์ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ค์์ผ๋ก ์ ์ฅ๋๊ณ ๊ด๋ฆฌ๋๋์ง ์์๋ณด์.
1. object๋ผ๋ ๋ณ์๊ฐ Stack ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค.
2. ๊ฐ์ฒด { name : 'Dana', age : 30 }๋ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์ @7002์ ์ ์ฅ๋๋ค.
-> ๋ณ์ object๋ @7002๋ฅผ ์ฐธ์กฐํ๊ฒ ๋จ.
3. @7002์๋ key-value ์์ด ์ ์ฅ๋๋ค.
4. name์ด๋ผ๋ key์ value 'Dana'๋ ๊ธฐ๋ณธํ Stringํ์ ์ผ๋ก, ๋๋ค์ Heap ๋ฉ๋ชจ๋ฆฌ @5001์ ์ ์ฅ๋๋ค.
-> name์ @5001์ ์ฐธ์กฐํ๊ฒ ๋จ.
5. age์ญ์ value์ธ 30์ด Heap ๋ฉ๋ชจ๋ฆฌ @5002์ ์ ์ฅ๋๋ค.
-> age๋ @5002๋ฅผ ์ฐธ์กฐํจ.
6. ์ฝ์ ์ถ๋ ฅ ์, object๊ฐ ๊ฐ๋ฆฌํค๋ ์ฃผ์๊ฐ @7002๋ฅผ ์ฐธ์กฐํ์ฌ { name : 'Dana', age : 30 }๊ฐ ์ถ๋ ฅ๋๋ค.
7. ๊ฐ์ฒด object์ key 'age'์ ๊ฐ์ 29๋ก ์ฌํ ๋นํ๋ค.
8. 29๊ฐ ์๋ก์ด Heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ @5003์ ์ ์ฅ๋๋ค.
9. @7002์ ์ ์ฅ๋ key 'age'์ ์ฐธ์กฐ๊ฐ์ด @5002 -> @5003์ผ๋ก ๋ณ๊ฒฝ๋๋ค.
( ์ฌ๊ธฐ์ ! ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ด ๋ฐ๋ ์ ์๋ค๋ ์ ์์ ๊ฐ๋ณ์ ์ธ ํน์ง์ ๊ฐ๊ณ ์๋ค๊ณ ํ ์ ์๋ค. )
10. ์ฆ, ๋ณ์ object๋ ์ฌ์ ํ @7002๋ฅผ ์ฐธ์กฐํ๊ณ , @7002์ age์ ์ฐธ์กฐ๊ฐ๋ง ๋ฐ๋์๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ์ฐธ์กฐํ ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ณ์ ์ด๋ผ๋ ๊ฒ์ Heap ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ฒด ๋ด๋ถ ๋ฐ์ดํฐ(key-value ์์ value ์ฐธ์กฐ ๊ฐ)๋ฅผ ์์ ํ ์ ์๋ค๋ ์๋ฏธ์ด๋ค.
2. ๋ณ์ ๋ณต์ฌ
2-1. ๊ธฐ๋ณธํ ๋ฐ์ดํฐ
: ๊ฐ์ ๋ณต์ฌํ๋ฉฐ ๊ฐ ๋ณ์๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๋จ
let a = 10;
let b = a;
b = 15;
console.log(a); // 10
console.log(b); // 15
์์ ์์๋ฅผ ์ดํด๋ณด์.
1. ๋ณ์ a๋ Stack ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ a์ ํ ๋น๋ ๊ฐ 10์ Heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @5001์ ์ ์ฅ๋๋ค.
2. ๋ณ์ a๋ @5001์ ์ฐธ์กฐํ๋ค.
3. ๋ณ์ b๋ Stack ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ b = a ํ ๋น์ผ๋ก ์ธํด b๋ @5001์ ์ฐธ์กฐํ๋ค.
4. b์ 15๋ฅผ ์ฌํ ๋นํ๋ค.
5. 15๋ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฃผ์ @5002์ ์ ์ฅ๋๋ค.
6. b = 15๋ก ์ฌํ ๋น์ ํ๊ธฐ ๋๋ฌธ์ ๋ณ์ b๋ ์ด์ @5002๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ค.
7. ๋ณ์ a๋ ์ฌ์ ํ @5001์ ์ฐธ์กฐํ๋ค.
์ด๋ฐ ๊ณผ์ ์ ํตํด a๋ @5001์ ์ฐธ์กฐํ๊ณ b๋ @5002๋ฅผ ์ฐธ์กฐํ์ฌ ์ถ๋ ฅ๊ฐ์ด ๋ฌ๋ผ์ง๊ฒ ๋๋ค.
2-2. ์ฐธ์กฐํ ๋ฐ์ดํฐ
: ์ฐธ์กฐ๋ฅผ ๋ณต์ฌํ๋ฉฐ ๋์ผํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํด
let obj1 = { c : 10, d : 'ddd' };
let obj2 = obj1;
obj2.c = 20;
console.log(obj1); // { c : 20, d : 'ddd' }
console.log(obj2); // { c : 20, d : 'ddd' }
obj1๊ณผ ob2๋ฅผ ๋ณด์.
1. ๋ณ์ obj1์ Stack ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ ๊ฐ์ฒด { c : 10, d : 'ddd' }๋ Heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @7001์ ์ ์ฅ๋๋ค.
2. @7001์ ์ ์ฅ๋ key 'c'์ value๋ 10์ผ๋ก, ์์ ์์์์ ์ ์ฅ๋ Heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @5001์ ์ฐธ์กฐํ๋ค.
3. @7001์ ์ ์ฅ๋ ๋ ๋ค๋ฅธ key 'd'์ value 'ddd'๋ Heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @5002์ ์๋ก ์ ์ฅ๋๋ค.
4. ๋ณ์ obj1์ ๊ฐ์ฒด { c : 10, d : 'ddd' }๊ฐ ์ ์ฅ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @7001์ ์ฐธ์กฐํ๋ค.
5. ๋ณ์ obj2๋ Stack ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค.
6. obj2 = obj1 ํ ๋น์ผ๋ก ์ธํด obj2๋ obj1๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @7001์ ์ฐธ์กฐํ๋ค.
7. ๊ธฐ์กด์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ 20์ด ์๊ธฐ ๋๋ฌธ์ Heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @5003์ 20์ ์๋ก ์ ์ฅ๋๋ค.
8. obj2.c = 20์ผ๋ก ์ฌํ ๋น ๋์ด key 'c'์ value๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @5002๊ฐ ์๋ ์ฃผ์ @5003์ ์ฐธ์กฐํ๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก obj1๊ณผ obj2๋ ์ฌ์ ํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @7001์ ์ฐธ์กฐํ์ง๋ง
๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @7001 ๋ด๋ถ์์ key 'c'์ ์ฐธ์กฐ ๊ฐ์ด @5002 -> @5003์ผ๋ก ๋ฐ๋์๊ธฐ ๋๋ฌธ์
obj1๊ณผ obj2์ console ์ถ๋ ฅ๊ฐ์ ๋ชจ๋ { c : 20, d : 'ddd' }๊ฐ ๋๋ค.
3. ๊น์ ๋ณต์ฌ vs ์์ ๋ณต์ฌ
3-1. ์์ ๋ณต์ฌ
const getShallowCopy = (obj) => {
return {
...obj
}
};
const orgin = {
name : 'Dana',
age : 30,
homepage : { blog : 'string', instagram : 'string', isPublic : true }
};
const shallowCopyObj = getShallowCopy(orgin);
orgin.name = "Bob";
shallowCopyObj.age = 27;
shallowCopyObj.homepage.isPublic = false;
console.log('orgin',orgin);
// {name: 'Bob',age: 30, homepage: { blog: 'string', instagram: 'string', isPublic: false }}
console.log('shallowCopyObj',shallowCopyObj);
// { name: 'Dana', age: 27,homepage: { blog: 'string', instagram: 'string', isPublic: false }}
console.log(orgin === shallowCopyObj); // false
origin์ ์ถ๋ ฅ๊ฐ์ ๋ณด์.
name ๊ฐ์ ๋ณ๊ฒฝํ ๋๋ก ์ ๋ค์ด ๊ฐ๋๋ฐ.. ์? ๊ฐ์๊ธฐ ์ isPublic์ด false๊ฐ ๋์์ง?
isPublic์ ๊ฐ์ false๋ก ์์ ํ ๊ฒ์ shallowCopyObj์ธ๋ฐ
origin === shallowCopyObj๊ฐ false์ธ๋ฐ ์์ง ???!
์ ์ด์ ์ฒ์ฒํ ์ดํด๋ณด์.
1. ๋ณ์ origin์ stack ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ ,
๊ฐ์ฒด { name: 'Dana', age: 30, homepage: { blog: 'string', instagram: 'string', isPublic: true }}๋ heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @7002 ์ ์ ์ฅ๋๋ค.
-> ์ด ์์ ์์, ๋ณ์ origin์ heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @7002๋ฅผ ์ฐธ์กฐํ๋ค.
2. ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @7002์๋ homepage๋ผ๋ key์ value๊ฐ ๋ ๋ค์ ๊ฐ์ฒด๋ก ํ ๋น๋์ด ์๋ค.
๋ฐ๋ผ์ ๊ฐ์ฒด { blog: 'string', instagram: 'string', isPublic: true }๋ฅผ heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @7003์ ์๋ก ์ ์ฅํ๋ค.
-> ์ฌ๊ธฐ์, homepage๋ @7003์ ์ฐธ์กฐํ๋ค.
3. @7003 ๋ฉ๋ชจ๋ฆฌ ๋ด๋ถ์ isPublic์๋ true๊ฐ ํ ๋น๋์ด ์๋๋ฐ, true๋ ๋ ๋ค์ heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @5001์ ์๋ก ์ ์ฅ๋๋ค.
-> isPublic์ @5001์ ์ฐธ์กฐํ๋ค.
4. ๋ณ์ shallowCopy๋ stack ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ , origin์ ์์ ๋ณต์ฌํ์ฌ
์๋กญ๊ฒ ์ป์ ๊ฐ์ฒด { name: 'Dana', age: 30, homepage: { blog: 'string', instagram: 'string', isPublic: true }}๋ heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ ์ @7003์ ์ ์ฅ๋๋ค.
-> ์ฌ๊ธฐ์ ๋ณ์ shallowCopy๋ @7003์ ์ฐธ์กฐํ๋ค.
5. ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @7003์๋ homepage๋ผ๋ key์ value๊ฐ ๋๋ค์ ๊ฐ์ฒด๋ก ํ ๋น๋์ด ์๋ค.
๊ฐ์ฒด { blog: 'string', instagram: 'string', isPublic: true }๋ heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ @7003์ ํ ๋น๋์ด ์์ด ํด๋น ๊ฐ์ ๊ฐ์ ธ์จ๋ค.
-> ์ฌ๊ธฐ์๋ homepage๋ @7003์ ์ฐธ์กฐํ๋ค.
๋ฐ๋ผ์ ์์์๋ถํฐ ์ดํด๋ณธ ๋ฐ์ ๋ฐ๋ฅด๋ฉด,
์์ ๋ณต์ฌ๋ฅผ ํ์ฌ 1-depth์ ๊ฐ์ฒด๋ ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ๊ฐ์ ๋ฐ๊ฟ๋ ์ํฅ์ ๋ฏธ์น์ง ์์ง๋ง
2-depth ์ด์์ ๊ฐ์ฒด๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฐธ์กฐํ์ฌ ๊ฐ์ฒด์ ๊ฐ์ด ๋ฐ๋ ๊ฒฝ์ฐ ์๋ก ์ํฅ์ ์ฃผ๊ฒ ๋๋ค.
์ฌ๊ธฐ์ ์ป๊ฒ ๋ ๊ตํ ! ์์ ๋ณต์ฌ๋ฅผ ํ ์, ์ค์ฒฉ๋ ๊ฐ์ฒด๊ฐ ์ ๋๋ก ๋ณต์ฌ๋์ง ์์ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ฐ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋ฉด ์ข์๊น?
๋ฐ๋ก ์ด์ด์ ๊น์ ๋ณต์ฌ๋ฅผ ์ดํด๋ณด์.
3-2. ๊น์ ๋ณต์ฌ
const getDeepCopy = (obj) => {
if(obj === null || typeof obj !== 'object') {
return obj;
}
let copy = {};
for (let key in obj) {
copy[key] = getDeepCopy(obj[key]);
}
return copy;
}
const origin = {
name : 'Dana',
age : 30,
homepage : { blog : 'string', instagram : 'string', isPublic : true }
} ;
const deepCopyObj = getDeepCopy(origin);
deepCopyObj.name = 'Bob';
deepCopyObj.homepage.isPublic = false;
console.log('origin', origin); //{ name : 'Dana', age : 30, homepage : { blog : 'string', instagram : 'string', isPublic : true } } ;
console.log('deepCopyObj', deepCopyObj); // { name : 'Bob', age : 30, url : { image : 'string', path : 'string', isPublic : false } }
console.log(origin === deepCopyObj); //false
๊น์ ๋ณต์ฌ๋ฅผ ํ๋๋ object๊ฐ ์๋ํ๋ ๋๋ก ์ ๋ณต์ฌ๋์๋ค!
์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํ์ฌ ์ค์ฒฉ๋ ๊ฐ์ฒด๋ ๊ณ์ํด์ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฐธ์กฐํ๋๋ก ํ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊น์ ๋ณต์ฌ๋ฅผ ์คํํ๋ ํจ์ getDeepCopy์ if ์กฐ๊ฑด๋ฌธ์์ null ์ฒดํฌ๋ ์ ํ๋ ๊ฑด์ง ์๋ฌธ์ด ๋ค์ด์ ๊ตฌ๊ธ๋ง์ ํด๋ดค๋ค.
๋ง์ฝ null ์ฒดํฌ๋ฅผ ๋บ๋ค๋ฉด,
if๋ฌธ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ obj์ ํ์ ์ด 'object'๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ์คํ๋๊ฒ ๋๋ค.
์ฌ๊ธฐ์ ์์ฃผ ์ฌ๋ฐ๋ ์ฌ์ค์ ์๊ฒ ๋์๋๋ฐ,
typeof null์ console์ ์ฐ์ผ๋ฉด 'object'๊ฐ ์ถ๋ ฅ๋๋ค!!
์์ธ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ด๊ธฐ์ ์ค๋ฅ๊ฐ ์ฌํ๊ป ์ด์ด์ง๊ณ ์์ด์ ๊ทธ๋ ๋ค๊ณ ํ๋ค.
๋ฐ๋ผ์ null์ฒดํฌ๋ฅผ ํ์ง ์์ผ๋ฉด
if๋ฌธ์ ํ์ง ์๊ฒ ๋๊ณ null์ ๋ฐ๋ณต์ ํ ์ ์๊ธฐ ๋๋ฌธ์ for๋ฌธ ์คํ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์ค๋ ํ๋ฃจ ํ๊ณ
์ด์ ๋ ๊ฐ์๋ฅผ ์ฐ์์ผ๋ก ๋ฃ๊ณ ๋ ํ์ ๋ณต์ต์ ํ๋ฉด์ TIL์ ์์ฑํ๋ค.
๊ฐ์๋ฅผ ์ฐ์ํด์ ๋ค์ผ๋ ์ง๋๋ฅผ ๋นจ๋ฆฌ ๋๊ฐ ์ ์์ด์ ์ข์๋ค.
๊ทธ๋ฌ๋ ๋ง์ง๋ง์ ๋ณต์ตํ๋ฉฐ TIL์ ์์ฑํด๋ณด๋, ๊ฐ์๋ฅผ ๋ฃ๋ ์ค์๋ ๋ค ์ดํดํ๋ค๊ณ ์๊ฐํ์ง๋ง
๋ง์ ๋ด ์ธ์ด๋ก ํ์ด์ ์ฐ๋ ค๊ณ ํ๋ ์์ ํ ์ดํด๋ฅผ ํ์ง ๋ชป ํ๋์ง ๋ด ๋ง๋ก ํํํ๋๋ฐ ์ด๋ ค์์ด ์์๋ค.
๊ทธ๋์ ์ค๋์ ๊ฐ์ ์ง๋๋ฅผ ๋น ๋ฅด๊ฒ ๋๊ฐ๋ ๊ฒ์ ํฌ๊ธฐํ๊ณ
ํ ์ฃผ์ ์ ๋ํ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋์ ๋ณต์ตํ๋ฉฐ ๋ด ์ธ์ด๋ก ํํํด ๋ณด์๋๋ฐ,
๋์๊ฒ๋ ์ค๋ ํ๋ ๋ฐฉ์์ด ๋ ์ ์๋ฟ์๋ค.
๊ทธ๋์ ์์ ๋ณต์ฌ - ๊น์ ๋ณต์ฌ๋ผ๋ ๋ง์ ๋ง์ด ๋ค์ด๋ดค์ง๋ง ์์ธํ ๋ป์ ์์ง ๋ชป ํ๋๋ฐ
์ค๋ ์ ๋๋ก ๊ณต๋ถ๋ฅผ ํ ์ ์์๋ค.
'๋ด์ผ๋ฐฐ์์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS/๋ฌ๋ฆฌ๊ธฐ๋ฐ] 250108 TIL - ๋ฐฐ์ด (0) | 2025.01.08 |
---|---|
[JS๋ฌธ๋ฒ์ข ํฉ๋ฐ3์ฃผ์ฐจ] 250107 TIL (0) | 2025.01.07 |
[JS/๋ฌ๋ฆฌ๊ธฐ๋ฐ] 250106 TIL (0) | 2025.01.06 |
[์๋ฐ์คํฌ๋ฆฝํธ๋ฌธ๋ฒ์ข ํฉ๋ฐ3์ฃผ์ฐจ] 250105 TIL (0) | 2025.01.05 |
[์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ ์ข ํฉ๋ฐ 1์ฃผ์ฐจ] 250102 TIL - 1 (2) | 2025.01.02 |