πŸ§‘‍πŸ’» μ§§μ€ν˜Έν‘/JS·TS

νƒ€μž…μŠ€ν¬λ¦½νŠΈκ°€ κ²°κ΅­ νƒ€μž…μ„ μœ„ν•œ 언어이기 λ•Œλ¬Έμ—, λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œλ§ˆλ‹€ νƒ€μž…μ„ λͺ…μ‹œν•΄μ•Ό ν•œλ‹€κ³  생각할 수 μžˆλ‹€. κ·ΈλŸ¬λ‚˜ νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ λ§Žμ€ νƒ€μž… ꡬ문은 사싀 λΆˆν•„μš”ν•˜λ‹€. μ΄λ ‡κ²Œ 아무 생각없이 λͺ…μ‹œν–ˆλ˜ νƒ€μž…λ“€μ΄ μžˆλ‹€. ν•˜μˆ˜μ˜ μ½”λ“œ. νƒ€μž… 좔둠이 λœλ‹€λ©΄ λͺ…μ‹œμ  νƒ€μž… ꡬ문은 ν•„μš”ν•˜μ§€ μ•Šλ‹€. 였히렀 μ½”λ“œκ°€ 길어지고 가독성이 μ•ˆμ’‹μ•„μ§ˆ 수 있기 λ•Œλ¬Έμ—. ν•˜μ§€λ§Œ νƒ€μž…μ΄ 좔둠될 수 μžˆμŒμ—λ„ νƒ€μž…μ„ λͺ…μ‹œν•˜λŠ” 것이 더 쒋은 λͺ‡κ°€μ§€ 상황듀이 μžˆλ‹€. 더 μ •ν™•ν•œ μœ„μΉ˜μ— 였λ₯˜λ₯Ό ν‘œμ‹œν•˜κΈ° μœ„ν•¨μ΄λ‹€. 객체 λ¦¬ν„°λŸ΄μ„ μ •μ˜ν•  λ•Œ ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ„ λͺ…μ‹œν•  λ•Œ νƒ€μž… λ„“νžˆκΈ° let 으둜 μ„ μ–Έν•˜λŠ” 경우. 값이 μž¬ν• λ‹Ήλ  κ°€λŠ₯성이 μžˆλ‹€. λ”°λΌμ„œ 처음 μ΄ˆκΈ°ν™”ν•œ 값을 가지고 ν• λ‹Ή κ°€λŠ₯ν•œ κ°’λ“€μ˜ 집합을 μœ μΆ”ν•΄μ•Ό 함. μ–΄λŠμ •λ„ κ°€λŠ₯성을 μ—΄μ–΄μ£ΌκΈ° μœ„ν•΄μ„œ 타..
책을 μ΄μš©ν•œ μŠ€ν„°λ””λ₯Ό ν•˜λ©΄μ„œ ν‰μ†Œμ— 쓰지 μ•ŠλŠ” (κ²½ν—˜μ΄ μ•„λ‹Œ μ±… λ‚΄μš©μ„ μ •λ¦¬ν•˜λŠ”) 글을 μ“°λ©΄μ„œ λ§Žμ€ 고민을 ν•˜κ²Œ λœλ‹€. μ–΄λ–»κ²Œ ν•΄μ•Ό μ™„λ²½νžˆ μ΄ν•΄ν•˜κ³ , μ •λ¦¬ν•˜κ³ , 기둝할 수 μžˆμ„κΉŒ. μ±…μ˜ μˆœμ„œ κ·ΈλŒ€λ‘œ 쓰지 μ•Šκ³  λ‚΄κ°€ μ΄ν•΄ν•œ νλ¦„λŒ€λ‘œ μž¬κ΅¬μ„±ν•΄μ„œ 글을 쓰도둝 λ…Έλ ₯해보렀고 ν•œλ‹€. 효율적인 λ°©λ²•μΈμ§€λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ. μ§€λ‚œμ£Όμ— κ³΅λΆ€ν–ˆλ˜ ꡬ쑰적 νƒ€μ΄ν•‘μ˜ κ΄€μ μ—μ„œ 보면 μ•„λž˜μ˜ μ½”λ“œλŠ” 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€. interface Room { numDoors: number; ceilingHeightFt: number; } const obj = { numDoors: 1, ceilingHeightFt: 10; elephant: 'present', } const r: Room = obj; μΆ”λ‘ λœ obj의 νƒ€μž…μ€ Roomνƒ€μž…μ˜ λΆ€λΆ„ ..
νƒ€μž…μ„ μ“°λŠ”λ°μ„œ μ‹€λ ₯의 νŽΈμ°¨κ°€ 크게 λ‚˜νƒ€λ‚œλ‹€. μ§€λ‚œ λ„₯μŠ€ν„°μ¦ˆ ν™œλ™ 후기에 μ μ—ˆλ˜ λ¬Έμž₯이닀. μ–΄λ ΅κ²Œ 막 νƒ€μž…μ„ 이리저리 μ“°κ³  μ΄λŸ°λ¬Έμ œκ°€ μ•„λ‹ˆλ‹€. μ˜€λž«λ™μ•ˆ λ™λ™λŒ€λ‹€ λ°œκ²¬ν•œ 방법이 μ•Œκ³ λ³΄λ©΄ ꡉμž₯히 기본적인 νƒ€μž… λ¬Έλ²•μ΄μ—ˆλ˜ κ²½μš°κ°€ κ½€ μžˆμ—ˆλ‹€. μ΄λ ‡κ²Œ μ–Όλ ˆλ²Œλ ˆ κ°œλ°œν•΄μ˜¨ ν•œκ·œμ§„μ„ μœ„ν•œ νƒ€μž…μŠ€ν¬λ¦½νŠΈ 뿌수기 μŠ€ν„°λ””. νƒ€μž… μ΄ν•΄ν•˜κΈ° μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  값은 데이터 νƒ€μž…μ„ κ°–λŠ”λ‹€. 값을 μ €μž₯ν•  λ•Œ 확보해야 ν•˜λŠ” λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기λ₯Ό κ²°μ •ν•˜κΈ° μœ„ν•΄, 값을 μ°Έμ‘°ν•  λ•Œ ν•œ λ²ˆμ— 읽어 λ“€μ—¬μ•Ό ν•  λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기λ₯Ό κ²°μ •ν•˜κΈ° μœ„ν•΄, λ©”λͺ¨λ¦¬μ—μ„œ 읽어 듀인 2μ§„μˆ˜λ₯Ό μ–΄λ–»κ²Œ 해석할지 κ²°μ •ν•˜κΈ° μœ„ν•΄. ν•˜μ§€λ§Œ μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 정적 νƒ€μž… 이 μ•„λ‹Œ 동적 νƒ€μž… 언어이닀. λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ λ°μ΄ν„°μ˜ νƒ€μž…μ„ 사전에 μ„ μ–Έν•˜λŠ” 것이 μ•„λ‹ˆλ‹€. μ–΄λ–€ 데이..
1. ν˜Έμ΄μŠ€νŒ… μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 콜 μŠ€νƒμ— μ „μ—­ μ‹€ν–‰μ»¨ν…μŠ€νŠΈλ₯Ό λ‹΄λŠ”λ‹€. environmentRecord ν˜„μž¬ μ»¨ν…μŠ€νŠΈμ™€ κ΄€λ ¨λœ μ½”λ“œλ“€μ˜ μ‹λ³„μž 정보듀이 μ €μž₯ λ§€κ°œλ³€μˆ˜ 이름, ν•¨μˆ˜ μ„ μ–Έ, λ³€μˆ˜λͺ… 등을 μˆœμ„œλŒ€λ‘œ μˆ˜μ§‘ outerEnvironmentReference λ°”λ‘œ 직전 μ»¨ν…μŠ€νŠΈ(ν•΄λ‹Ή ν•¨μˆ˜κ°€ μ„ μ–Έλœ μœ„μΉ˜)의 LexicalEvironment 정보λ₯Ό μ°Έμ‘° μ½œμŠ€νƒμ—μ„œλŠ” κ°€μž₯ μ΅œκ·Όμ— μ‹€ν–‰λœ μ‹€ν–‰μ»¨ν…μŠ€νŠΈλ§Œ ν™œμ„±ν™”λœλ‹€. λ§Œμ•½ ν•¨μˆ˜ aμ—μ„œ ν•¨μˆ˜ bκ°€ μ‹€ν–‰λ˜λ©΄ 또 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό λ‹΄λŠ”λ‹€. ν•¨μˆ˜ b의 싀행을 마치고 ν•¨μˆ˜ bκ°€ μ’…λ£Œλ˜λ©΄ μ‹€ν–‰μ»¨ν…μŠ€νŠΈκ°€ 사라지고 λ‹€μ‹œ a둜 λŒμ•„μ˜΄. 에이도 μ’…λ£Œλ˜λ©΄ μ „μ—­ μ»¨ν…μŠ€νŠΈλ‘œ. console.log(TVChannel) //undefined var TVChannel = "Netflix"; ..
κ°μ²΄λŠ” μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” property와 λ™μž‘μ„ λ‚˜νƒ€λ‚΄λŠ” method둜 μ΄λ£¨μ–΄μ Έμžˆλ‹€. λ©”μ†Œλ“œκ°€ μžμ‹ μ΄ μ†ν•œ 객체의 propertyλ₯Ό μ°Έμ‘°ν•˜λ €λ©΄ const someone = { name: '9yu', getName() { return someone.name; }; }; μ΄λ ‡κ²Œ ν•  수 도 μžˆκ² μ§€λ§Œ, 쒋은 방법은 μ•„λ‹ˆλ‹€. const someone = { name: '9yu', getName() { return this.name; }; }; λŒ€μ‹  μ΄λ ‡κ²Œ thisλ₯Ό μ‚¬μš©ν•΄μ„œ μžμ‹ μ΄ μ†ν•œ 객체λ₯Ό μ°Έμ‘°ν•  수 μžˆλ‹€. 1. this 바인딩 function printThis() { console.log(this); } printThis(); μ§€λ‚œμ£Ό ν΄λ‘œμ €μ—μ„œ μ‹€ν–‰μ»¨ν…μŠ€νŠΈμ— λŒ€ν•΄μ„œ ν•œλ²ˆ λ΄€μ—ˆλ‹€. ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν• λ•Œ μ‹€ν–‰μ»¨ν…μŠ€νŠΈ..
μ •μ˜ : ν•¨μˆ˜μ™€ ν•¨μˆ˜κ°€ μ„ μ–Έλœ μ–΄νœ˜μ  ν™˜κ²½μ˜ μ‘°ν•© μ–΄λ–€ ν•¨μˆ˜ Aμ—μ„œ μ„ μ–Έν•œ λ³€μˆ˜ aλ₯Ό μ°Έμ‘°ν•˜λŠ” λ‚΄λΆ€ ν•¨μˆ˜ Bλ₯Ό μ™ΈλΆ€λ‘œ 전달할 경우, A의 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ μ’…λ£Œλœ 이후에도 λ³€μˆ˜ aκ°€ 사라지지 μ•ŠλŠ” ν˜„μƒ 0. μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μ •μ˜ : μ‹€ν–‰ν•  μ½”λ“œμ— μ œκ³΅ν•  ν™˜κ²½ 정보듀을 λͺ¨μ•„놓은 객체 ν”„μ–Έμ—μ„œ λ‚˜μ˜¨ ν™œμ„± λ ˆμ½”λ“œμ™€ λΉ„μŠ·ν•œ κ°œλ…..? // ------------------- (1) var a = 1; function outer() { function inner() { console.log(a); var a = 3; // --------------- (2) } inner(); // -------- (3) console.log(a); // ----------------- (4) } outer(); // --------..
1. OOP 1-1. 객체지ν–₯의 4가지 νŠΉμ„± a. λ‹€ν˜•μ„± ν•œ 가지 역할이 상황에 따라 각기 λ‹€λ₯Έ 행동을 ν•œλ‹€. μ…°ν”„κ°€ 헛기침을_ν•œλ‹€() λΆ€ μ£Όλ°©μž₯ -> 눈치λ₯Ό_λ³Έλ‹€() 쑰리μž₯ -> μš”λ¦¬ν•˜λŠ”_척을_ν•œλ‹€() b. 좔상화 κ³΅ν†΅λœ κΈ°λŠ₯을 뽑아낸닀. ν˜„μ‹€ μ„Έκ³„μ˜ λ³΅μž‘ν•œ ν˜„μƒμ„ κ°„λ‹¨ν•œ ν˜•νƒœλ‘œ λͺ¨λΈλ§ν•œλ‹€. (simplify) μ΅œμ†Œν•œμ˜ 정보λ₯Ό μΆ”μΆœ c. μΊ‘μŠν™” κ΅¬ν˜„ λ‚΄μš©μ„ 내뢀에 μˆ¨κ²¨μ„œ 응집도λ₯Ό λ†’μ΄λŠ” 것 응집도 : 객체가 μžμ‹ κ³Ό κ΄€λ ¨λœ 것을 μ€‘μ‹¬μ μœΌλ‘œ ν–‰λ™ν•œλ‹€. c-1. 결합도 두 객체가 μ„œλ‘œ κ΄€λ ¨λ˜κ±°λ‚˜ μ˜μ‘΄ν•˜λŠ” 정도 μ•ˆ 쒋은거 (객체λ₯Ό λ–Όμ–΄λ‚΄κ±°λ‚˜ λ³€κ²½ν•˜κΈ° νž˜λ“€λ‹€) c-2. μΊ‘μŠν™”λ₯Ό μœ„λ°˜ν•œ 사둀 신문배달뢀가 고객의 지갑을 κ°€μ Έμ™€μ„œ, ν˜„κΈˆμ„ ν™•μΈν•˜κ³ , λˆμ„ κ°€μ Έκ°€λŠ”κ²Œ μ•„λ‹ˆλΌ 고객이 μžμ‹ μ˜ μ§€κ°‘μ˜ ν˜„κΈˆμ„ ν™•μΈν•˜κ³ , λˆμ„..
νƒ€μž… μΆ”λ‘  μΈν„°νŽ˜μ΄μŠ€μ™€ μ œλ„€λ¦­μ„ μ΄μš©ν•œ νƒ€μž… μΆ”λ‘  // μ œλ„€λ¦­μœΌλ‘œ λ„˜κ²¨μ€€ 값을 μΈν„°νŽ˜μ΄μŠ€μ˜ μ†μ„±μœΌλ‘œ μ‚¬μš©ν•  수 있음 interface Dropdown { value: T title: string; } var shoppingItem: Dropdown = { value: // 마우슀 올리면 string으둜 λœ¬λ‹€. μΈν„°νŽ˜μ΄μŠ€λ₯Ό extendsν•΄μ„œ μ‚¬μš©ν•  λ•Œλ„, interface Dropdown { value: T title: string; } var items: Dropdown = { value: 10, title: 'a' } interface DetailedDropdown extends Dropdown { description: string; tag: T; } var detailItems: DetailedDr..
ν•œκ·œμ§„
'πŸ§‘‍πŸ’» μ§§μ€ν˜Έν‘/JS·TS' μΉ΄ν…Œκ³ λ¦¬μ˜ κΈ€ λͺ©λ‘