[TIL] 210916

Lee SyongΒ·2021λ…„ 9μ›” 16일
0

TIL

λͺ©λ‘ 보기
29/204
post-thumbnail

πŸ“ 였늘 ν•œ 것

  1. reference μΆ”κ°€ ν•™μŠ΅

  2. javascript-koans 풀이 (진행 쀑)


πŸ“– ν•™μŠ΅ 자료

  1. μƒν™œμ½”λ”© μ°Έμ‘° κ°•μ˜ 1 ~ 3편

  2. 사전 ν•™μŠ΅ κ°€μ΄λ“œ STEP 5 (reference ~ javascript koans)


πŸ“š 배운 것

reference(μ°Έμ‘° νƒ€μž…)

μƒν™œμ½”λ”© μ°Έμ‘° κ°•μ˜ (1 ~ 3편) μ°Έκ³ 


1. 볡제

μ›μ‹œ νƒ€μž… / κ°’ / ν• λ‹Ήν•œλ‹€

var a = 1;
// λ³€μˆ˜ a에 1μ΄λΌλŠ” 값을 ν• λ‹Ήν•œλ‹€

var b = a;
// λ³€μˆ˜ b에도, λ³€μˆ˜ a에 ν• λ‹Ήν•œ 1μ΄λΌλŠ” 값을 '볡제'ν•΄μ„œ λ‹΄λŠ”λ‹€

b = 2;
// λ³€μˆ˜ b에 2λΌλŠ” 값을 ν• λ‹Ήν•œλ‹€

console.log(a);
// 1 β†’ λ³€μˆ˜ b의 λ³€ν™”μ™€λŠ” 상관 없이, λ³€μˆ˜ aμ—λŠ” μ—¬μ „νžˆ 1μ΄λΌλŠ” 값이 담겨 μžˆλ‹€

2. μ°Έμ‘°

객체 / μ£Όμ†Œ(μœ„μΉ˜ κ°’) / 가리킨닀

var a = {id : 1};
// λ³€μˆ˜ aλŠ” 객체가 μ €μž₯된 μ£Όμ†Œλ₯Ό 가리킨닀(μ°Έμ‘°ν•œλ‹€)

var b = a;
// λ³€μˆ˜ b도 λ³€μˆ˜ aκ°€ 가리킀고 μžˆλŠ” μ£Όμ†Œλ₯Ό 가리킨닀(μ°Έμ‘°ν•œλ‹€)

b.id = 2;
// πŸ“Œ λ³€μˆ˜ bκ°€ 가리킀고 μžˆλŠ” 객체의 idλΌλŠ” ν”„λ‘œνΌν‹°μ˜ 값을 2둜 λ°”κΎΈλ©΄

console.log(a.id);
// 2 β†’ λ³€μˆ˜ a도 λ³€μˆ˜ b와 λ˜‘κ°™μ€ 곳을 가리킀고 μžˆμœΌλ―€λ‘œ
// λ³€μˆ˜ aκ°€ 가리킀고 μžˆλŠ” 객체의 idλΌλŠ” ν”„λ‘œνΌν‹°μ˜ 값도 2κ°€ 찍히게 λœλ‹€

πŸ’‘ 주의 πŸ’‘ (μœ„μ˜ κ²½μš°μ™€ 비ꡐ할 것)

var a = {id : 1};
// λ³€μˆ˜ aλŠ” {id : 1}μ΄λΌλŠ” 객체가 μ €μž₯된 μ£Όμ†Œλ₯Ό 가리킨닀(μ°Έμ‘°ν•œλ‹€)

var b = a;
// λ³€μˆ˜ b도 λ³€μˆ˜ aκ°€ 가리킀고 μžˆλŠ” μ£Όμ†Œλ₯Ό 가리킨닀(μ°Έμ‘°ν•œλ‹€)

b = {id : 2};
// πŸ“Œ λ³€μˆ˜ bλŠ” {id : 2}λΌλŠ” 객체가 μ €μž₯된 μ£Όμ†Œλ₯Ό 가리킨닀(μ°Έμ‘°ν•œλ‹€)
// 즉, λ³€μˆ˜ bκ°€ 가리킀고 μžˆλŠ” μ£Όμ†Œκ°€ 바뀐닀

console.log(a.id);
// 1 β†’ λ³€μˆ˜ a와 bλŠ” μ„œλ‘œ λ‹€λ₯Έ μ£Όμ†Œλ₯Ό 가리킀고 μžˆμœΌλ―€λ‘œ
// λ³€μˆ˜ b의 변화와 상관없이, λ³€μˆ˜ a의 idλΌλŠ” ν”„λ‘œνΌν‹°μ˜ 값은 κ·ΈλŒ€λ‘œ 1둜 μ°νžŒλ‹€

μ΄λŠ” '1.볡제'의 μ˜ˆμ œμ™€ 같은 흐름이닀

λ‹€λ§Œ,
'1.볡제'μ—μ„œλŠ” λ³€μˆ˜ b에 λ³€μˆ˜ a의 값이 λ³΅μ œλ˜μ–΄ ν• λ‹Ήλ˜κ³ ,
'2. μ°Έμ‘°'μ—μ„œλŠ” λ³€μˆ˜ bκ°€ λ³€μˆ˜ aκ°€ 가리킀고 μžˆλŠ” μ£Όμ†Œλ₯Ό 같이 가리킬 뿐이닀


3. ν•¨μˆ˜

1) μ›μ‹œ νƒ€μž… / 볡제 / ν•¨μˆ˜

var a = 1;
// λ³€μˆ˜ a에 1μ΄λΌλŠ” 값을 ν• λ‹Ήν•œλ‹€

function func(b) {
  b = 2;  
}
// b의 값을 2둜 λ°”κΎΈμ–΄μ£ΌλŠ” func ν•¨μˆ˜ μ •μ˜

func(a);
// aλ₯Ό func ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ μ „ν•΄μ£Όλ©΄μ„œ func ν•¨μˆ˜ 호좜

console.log(a);
// 1

μœ„μ˜ μ½”λ“œλ₯Ό ν’€μ–΄ μ“°λ©΄ μ•„λž˜μ™€ κ°™λ‹€

var a = 1;
b = a;
b = 2;
console.log(a)

2) 객체 / μ°Έμ‘° / ν•¨μˆ˜

var a = {id : 1};
function func(b) {
  b.id = 2; // πŸ“Œ
}
func(a);
console.log(a.id);

μœ„μ˜ μ½”λ“œλ₯Ό ν’€μ–΄ μ“°λ©΄ μ•„λž˜μ™€ κ°™λ‹€

var a = {id : 1};
b = a;
b. id = 2;
console.log(a.id); // 2

πŸ’‘ 주의 πŸ’‘ (μœ„μ˜ κ²½μš°μ™€ 비ꡐ할 것)

var a = {id : 1};
function func(b) {
  b = {id : 2}; // πŸ“Œ
}
func(a);
console.log(a.id);

μœ„μ˜ μ½”λ“œλ₯Ό ν’€μ–΄ μ“°λ©΄ μ•„λž˜μ™€ κ°™λ‹€

var a = {id : 1};
var b = a;
b = {id : 2};
console.log(a.id); // 1

Primitive and Reference Quiz


1번 문제

const person = {
  age : 30
};

const something = person.age;

person.age = 50;

console.log(something);

풀이

const person = {age : 30};

console.log(typeof person.age); // 'number'
const something = person.age; // λ³€μˆ˜ something에 ν• λ‹Ήλœ 건 30μ΄λΌλŠ” μˆ«μžμž„
console.log(typeof something); // 'number'

person.age = 50; // personμ΄λΌλŠ” 객체의 ageλΌλŠ” ν”„λ‘œνΌν‹°μ˜ 값이 30μ—μ„œ 50으둜 변경됨
console.log(something); // 30 β†’ something은 λ³€ν™” x

5번 문제

var secret = {
  data : 'I am secret'
};

function destroy (stuff) {
  stuff = null;
}

destroy(secret);

console.log(secret); //

μœ„μ˜ μ½”λ“œλ₯Ό ν’€μ–΄ μ“°λ©΄ μ•„λž˜μ™€ κ°™λ‹€

var secret = {
  data : 'I am secret'
};

var stuff = secret;

stuff = null;

console.log(secret); // {data : 'I am secret'}

javascript-koans


풀이 진행 쀑


✨ 내일 ν•  것

  1. javascript-koans 마무리
profile
λŠ₯λ™μ μœΌλ‘œ μ‚΄μž, ν–‰λ³΅ν•˜κ²ŒπŸ˜

0개의 λŒ“κΈ€