λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ“° μ–Έμ–΄/JS

데이터 νƒ€μž… & ν•¨μˆ˜

μ±… <λŸ¬λ‹μžλ°”μŠ€ν¬λ¦½νŠΈ>λ₯Ό 기본으둜 배운 μžλ°”μŠ€ν¬λ¦½νŠΈ λ‚΄μš©μž…λ‹ˆλ‹€.

 

λͺ©μ°¨

  • <데이터 νƒ€μž…>
  • 1. λ³€μˆ˜μ™€ μƒμˆ˜, λ¦¬ν„°λŸ΄
  • 2. μ‹λ³„μž
  • 3. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ κ°’ - μ›μ‹œ νƒ€μž…κ³Ό 객체
  • <ν•¨μˆ˜>
  • 1. ν•¨μˆ˜ μ„ μ–Έ
  • 2. ν•¨μˆ˜ ν‘œν˜„μ‹, ν™”μ‚΄ν‘œ ν‘œκΈ°λ²•
  • 3. ν•¨μˆ˜ 호좜, (call, apply, bind)

 

<데이터 νƒ€μž…>

1. λ³€μˆ˜μ™€ μƒμˆ˜, λ¦¬ν„°λŸ΄

1-1) λ³€μˆ˜(let)와 μƒμˆ˜(const) : μ΄ˆκΉƒκ°’ μƒλž΅κ°€λŠ₯, μƒλž΅ν•˜λ©΄ undefined으둜 λŒ€μ²΄λ¨

let/const  λ³€μˆ˜/μƒμˆ˜μ΄λ¦„;
let/const  λ³€μˆ˜/μƒμˆ˜μ΄λ¦„ = μ΄ˆκΉƒκ°’;
let/const  λ³€μˆ˜/μƒμˆ˜μ΄λ¦„1 = μ΄ˆκΉƒκ°’1, λ³€μˆ˜/μƒμˆ˜μ΄λ¦„2 = μ΄ˆκΉƒκ°’2;

β€» λ³€μˆ˜ vs μƒμˆ˜

μš°μ„  μƒμˆ˜λ‘œ λ§Œλ“€κ³  λ³€ν•˜λŠ”κ²Œ μžμ—°μŠ€λŸ½λ‹€κ³  μƒκ°λ˜λ©΄ λ³€μˆ˜λ‘œ λ³€κ²½

μ˜ˆμ™Έ) μƒμˆ˜x, 항상 λ³€μˆ˜μΈ 경우 : 루프, μ‹œκ°„μ΄ μ§€λ‚˜λ©΄μ„œ 값이 λ°”λ€ŒλŠ” 경우

 

1-2) λ¦¬ν„°λŸ΄ : 값을 μ§€μ •ν•΄μ€„λ•Œμ— ν• λ‹Ήλ˜λŠ” κ°’

 

2. μ‹λ³„μž : 객체(λ³€μˆ˜, μƒμˆ˜, ν•¨μˆ˜)의 이름

2-1) μ‹λ³„μž 이름 κ·œμΉ™

  • μ‹λ³„μžλŠ” λ°˜λ“œμ‹œ κΈ€μžλ‚˜ λ‹¬λŸ¬ κΈ°ν˜Έ($), λ°‘쀄(_)둜 μ‹œμž‘ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • μ‹λ³„μžμ—λŠ” κΈ€μžμ™€ 숫자, λ‹¬λŸ¬ 기호, λ°‘μ€„λ§Œ μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • πλ‚˜ ö κ°™μ€ μœ λ‹ˆμ½”λ“œ λ¬Έμžλ„ μ“Έ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
  • μ˜ˆμ•½μ–΄λŠ” μ‹λ³„μžλ‘œ μ“Έ 수 μ—†μŠ΅λ‹ˆλ‹€.
  • μ‹λ³„μžλŠ” λŒ€λ¬Έμžλ‘œ μ‹œμž‘ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€.
  • 밑쀄 ν•œ 개 λ˜λŠ” 두 개둜 μ‹œμž‘ν•˜λŠ” μ‹λ³„μžλŠ” μ•„μ£Ό νŠΉλ³„ν•œ 상황, λ˜λŠ” ‘λ‚΄λΆ€’ λ³€μˆ˜μ—μ„œλ§Œ μ‚¬μš©ν•©λ‹ˆλ‹€. μžμ‹ λ§Œμ˜ νŠΉλ³„ν•œ λ³€μˆ˜ μΉ΄ν…Œκ³ λ¦¬λ₯Ό λ§Œλ“€μ§€ μ•ŠλŠ” ν•œ, λ³€μˆ˜λ‚˜ μƒμˆ˜ μ΄λ¦„을 λ°‘μ€„λ‘œ μ‹œμž‘ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€.
  • 제이쿼리λ₯Ό μ‚¬μš©ν•  κ²½μš°, λ‹¬λŸ¬ κΈ°ν˜Έλ‘œ μ‹œμž‘ν•˜λŠ” μ‹λ³„μžλŠ” λ³΄ν†΅ μ œμ΄μΏΌλ¦¬ κ°μ²΄λΌλŠ” μ˜λ―Έμž…λ‹ˆλ‹€. 

 

3. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ κ°’ - μ›μ‹œ νƒ€μž…κ³Ό 객체

μ›μ‹œνƒ€μž…  숫자, λ¬Έμžμ—΄, boolean, null, undefined, symbol
객체(μ—¬λŸ¬ 가지 ν˜•νƒœ, κ°’ 지정) Array, Date, RegExp, Mapκ³Ό WeakMap, Setκ³Ό WeakSet

 

<ν•¨μˆ˜>

1. ν•¨μˆ˜ μ„ μ–Έ

function ν•¨μˆ˜μ΄λ¦„(){
	//...
}

#μ°Έμ‘°
ν•¨μˆ˜μ΄λ¦„;

#호좜
ν•¨μˆ˜μ΄λ¦„();

 

2. ν•¨μˆ˜ ν‘œν˜„μ‹

#ν•¨μˆ˜μ΄λ¦„ μƒλž΅κ°€λŠ₯, μž¬κ·€ν•  땐 ν•„μš”
const g = function ν•¨μˆ˜μ΄λ¦„(){
	//...
}

2-1) ν™”μ‚΄ν‘œ ν‘œκΈ°λ²• : function단어와 μ€‘κ΄„ν˜Έ 숫자λ₯Ό 쀄이렀고 κ³ μ•ˆλ¨

  • function을 μƒλž΅ν•΄λ„ 됨.
  • ν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜κ°€ 단 ν•˜λ‚˜ 뿐이라면 κ΄„ν˜Έ (())도 μƒλž΅κ°€λŠ₯.
  • ν•¨μˆ˜ λ°”λ””κ°€ ν‘œν˜„μ‹ ν•˜λ‚˜λΌλ©΄ μ€‘κ΄„ν˜Έμ™€ return문도 μƒλž΅κ°€λŠ₯.
  • ex) ν™”μ‚΄ν‘œ ν‘œκΈ°λ²•μ€ 항상 읡λͺ…ν•¨μˆ˜.
const f1 = () => "Hello!";
const f2 = name => "Hello!, $(name)";
const f3 = (a,b) => a+b;

 

3. ν•¨μˆ˜ 호좜

3-1) ν•¨μˆ˜ 호좜 방법

ν•¨μˆ˜μ΄λ¦„();
ν•¨μˆ˜μ΄λ¦„.call/apply/bind(객체,인수/[인수]);

3-2) call, apply, bind : ν•¨μˆ˜μ˜ μ‹€ν–‰μ˜μ—­μ„ μ§€μ •ν•΄μ£ΌλŠ” ν•¨μˆ˜μ˜ λ©”μ†Œλ“œ

  • apply : λ°°μ—΄λ‘œ 인자λ₯Ό 전달.
ν•¨μˆ˜.apply(인자1, 인자2, ...)
  • call : 인자λ₯Ό ν•˜λ‚˜μ”© 전달, 2번째 μΈμžλΆ€ν„΄ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜λ‘œ 전달.
ν•¨μˆ˜.call(인자1, 인자2, ...)
  • bind : this의 값을 영ꡬ히 λ°”κΏ€ λ–„ μ‚¬μš©.
const f = ν•¨μˆ˜.bind(λ°”κΏ€κ°’)