21.01.26

μ΄μ†Œμž„Β·2021λ…„ 1μ›” 26일
0

TIL

λͺ©λ‘ 보기
6/12

πŸ’‘

μ›μ‹œ/μ°Έμ‘° μžλ£Œν˜•, μŠ€μ½”ν”„, ν΄λ‘œμ €

  • μ›μ‹œ μžλ£Œν˜•μ€ stack에 값을 μ €μž₯ν•˜μ§€λ§Œ, μ°Έμ‘° μžλ£Œν˜•μ€ heapμ΄λΌλŠ” λ³„λ„μ˜ λ©”λͺ¨λ¦¬ μ €μž₯ 곡간을 μ‚¬μš©ν•˜λ©° κ·Έ μ£Όμ†Œ 값을 λ³€μˆ˜μ— λ„£λŠ”λ‹€. κ·Έλž˜μ„œ μ°Έμ‘° μžλ£Œν˜•μ„ 원 λ³€μˆ˜κ°€ μ•„λ‹Œ λ‹€λ₯Έ λ³€μˆ˜μ— λ„£μ–΄μ„œ μˆ˜μ •ν•˜λ”λΌλ„ 원본값이 λ³€κ²½λœλ‹€. (λ°”λ‘œ κ°€κΈ°μ˜ λ°”λ‘œ κ°€κΈ°λ§Œ λ³΅μ‚¬λ˜λŠ” κ°œλ…)

  • constλŠ” λ³€ν•˜μ§€ μ•Šμ•„μ•Ό ν•˜λŠ” 값을 ν• λ‹Ήν•΄μ•Ό ν•  λ•Œ μ“΄λ‹€. μž¬ν• λ‹Ήμ΄ λΆˆκ°€λŠ₯ν•˜λ‹€.

  • Scope : { } μ•ˆμ˜ λ²”μœ„.

letconstvar
유효 λ²”μœ„Block scopeBlock scopeFunction Scope
κ°’ μž¬μ •μ˜κ°€λŠ₯λΆˆκ°€λŠ₯κ°€λŠ₯
μž¬μ„ μ–ΈλΆˆκ°€λŠ₯λΆˆκ°€λŠ₯κ°€λŠ₯

  • varλŠ” 같은 μ΄λ¦„μœΌλ‘œ μž¬μ„ μ–Έμ΄ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— 였λ₯˜λ₯Ό μΌμœΌν‚¬ 수 μžˆλ‹€. let μ‚¬μš©ν•˜κΈ°.

  • ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ λ³€μˆ˜ μ„ μ–Έ 없이 값을 ν• λ‹Ήν•  경우 μ „μ—­ λ³€μˆ˜μ—λ„ 영ν–₯을 쀄 수 있기 λ•Œλ¬Έμ— μ„ μ–Έ 없이 μ‚¬μš©ν•˜μ§€ 말 것. μ‹€μˆ˜λ₯Ό λ°©μ§€ν•˜λŠ” κΈ°λŠ₯을 μ‚¬μš©ν•˜κ³  싢을 경우 Strict Mode 적용. μ½”λ“œ κ°€μž₯ 상단에'use strict';

  • μ°Έμ‘° μžλ£Œν˜•μ˜ ===(strict equality)λŠ” μ£Όμ†Œ 값이 같은지λ₯Ό ν™•μΈν•œλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— console.log([1,2,3] === [1,2,3]); 의 κ²°κ³ΌλŠ” falseκ°€ λ‚˜μ˜¨λ‹€. λ°°μ—΄([])κ³Ό 객체({}) λ“± μ°Έμ‘° μžλ£Œν˜•μ„ 읽을 λ•Œ, 미리 μ£Όμ†Œ κ°’κ³Ό λ©”λͺ¨λ¦¬κ°’을 μž‘μ•„λ‘”λ‹€κ³  μƒκ°ν•˜μž. κ·ΈλŸ¬λ―€λ‘œ [] === [] 도 trueκ°€ λ‚˜μ˜€μ§€ μ•ŠλŠ”λ‹€.

  • ...something rest parameter, spread syntax라고 λΆ€λ₯Έλ‹€. ν•¨μˆ˜μ˜ 인자 뢀뢄에 μ“Έ 수 μžˆλ‹€. (function someWork(...args)) λͺ¨λ“  인자λ₯Ό νŽΌμ³μ„œ 배열에 λ‹΄λŠ”λ‹€. (배열을 κ°’μœΌλ‘œ 넣어도 펼치기 λ•Œλ¬Έμ— λ°°μ—΄ μ•ˆμ˜ 배열이 μ•„λ‹Œ ν•˜λ‚˜μ˜ 배열이 λœλ‹€. μ•„λž˜ μ°Έκ³ .) MDN μ „κ°œ ꡬ문

    let arr = ['code', 'states']
    let value = [
        ...arr,
        'pre',
        ...['course', 'student']
      ]
    
      // value κ°’
      ['code', 'states', 'pre', 'course', 'student']

  • Closure: μ™ΈλΆ€ ν•¨μˆ˜μ˜ λ³€μˆ˜μ— μ ‘κ·Όν•  수 μžˆλŠ” λ‚΄λΆ€ ν•¨μˆ˜. λ˜λŠ”, μ΄λŸ¬ν•œ μž‘λ™ 원리. λ³€μˆ˜μ— 각각 μ €μž₯ν•΄ μ‚¬μš©ν•  경우 μž¬μ‚¬μš©μ΄ μš©μ΄ν•˜λ‹€. MDN ν΄λ‘œμ €

    • 컀링
      ν•¨μˆ˜ ν•˜λ‚˜κ°€ n개의 인자λ₯Ό λ°›λŠ” λŒ€μ‹ , n개의 ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄ 각각 인자λ₯Ό λ°›κ²Œ ν•˜λŠ” 방법. μ™ΈλΆ€ ν•¨μˆ˜μ— λ³€μˆ˜λ₯Ό 넣은 μƒνƒœλ₯Ό μ €μž₯ν•˜μ—¬ ν…œν”Œλ¦Ώ ν•¨μˆ˜μ™€ 같이 μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.
      (ex. html νƒœκ·Έ 생성 ν•¨μˆ˜. μ™ΈλΆ€ ν•¨μˆ˜λŠ” <tag>, </tag>와 같이 λ³€μˆ˜ tagλ₯Ό μž…λ ₯ν•œ νƒœκ·Έλ₯Ό ν˜•μ„±ν•˜λŠ” ν•¨μˆ˜μ΄κ³ , λ‚΄λΆ€ ν•¨μˆ˜λŠ” μ™ΈλΆ€ ν•¨μˆ˜μ—μ„œ ν˜•μ„±ν•œ νƒœκ·Έλ₯Ό μž…λ ₯ν•œ λ¬Έμžμ—΄ μ•žλ’€μ— λΆ™μ—¬μ£ΌλŠ” κΈ°λŠ₯. μ‚¬μš©ν•  λ•ŒλŠ” μ™ΈλΆ€ ν•¨μˆ˜λ§Œ λ³€μˆ˜μ— ν• λ‹Ήν•΄ μ‚¬μš©ν•œλ‹€. let tagMaker = html Maker('tag'), tagMaker())
    • ν΄λ‘œμ € λͺ¨λ“ˆ νŒ¨ν„΄
      λ³€μˆ˜λ₯Ό μŠ€μ½”ν”„ μ•ˆμͺ½μ— 가두어 ν•¨μˆ˜ λ°–μœΌλ‘œ λ…ΈμΆœν•˜μ§€ μ•ŠλŠ” 방법. λ³€μˆ˜κ°€ λ°˜λ“œμ‹œ μ–΄λ–€ ν˜•νƒœμ˜ 값이어야 ν•  λ•Œ, μ΄μƒν•œ 값이 λ“€μ–΄κ°€λŠ” κ±Έ 방지할 λ•Œ κ°„μ ‘μ μœΌλ‘œλ§Œ 쑰절이 κ°€λŠ₯ν•˜λ„λ‘ ν•œλ‹€.
      (ex. ν•¨μˆ˜ 내뢀에 counter 값을 두고 increse, decrese, getValue λ“± λ‚΄λΆ€ ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ counter 값을 μ‘°μ •ν•˜κ³  λΆˆλŸ¬μ˜€λŠ” ν•¨μˆ˜. 리턴값을 return {function1: function() { }, {function2: function() { }} 처럼 ν•¨μˆ˜λ₯Ό 담은 객체둜 μ„€μ •, λ³€μˆ˜μ— μ™ΈλΆ€ ν•¨μˆ˜λ₯Ό ν• λ‹Ήν•˜κ³  λ³€μˆ˜μ΄λ¦„.function1()둜 μ ‘κ·Όν•΄ μ‚¬μš©ν•œλ‹€.)



γ€€

πŸ“

객체에 λŒ€ν•΄ μ–΄λŠ 정도 μˆ™μ§€ν–ˆλ‹€κ³  μƒκ°ν–ˆλŠ”λ°, 막상 μ½”ν”Œλ¦ΏμœΌλ‘œ 과제λ₯Ό ν•΄λ³΄λ‹ˆ ν™œμš© λŠ₯λ ₯이 ν˜•νŽΈμ—†μ—ˆλ‹€. μ–΄λ–»κ²Œ 더 μ—°μŠ΅ν•΄λ³Ό 수 μžˆμ„κΉŒ? πŸ€” obj[key] ν˜•νƒœκ°€ 값을 μ˜λ―Έν•œλ‹€λŠ” κ±Έ λ¨Έλ¦¬λ‘œλŠ” μ•Œκ³  μžˆλŠ”λ° μ—¬λŸ¬ μžλ£Œν˜•μ„ μ„žμ–΄μ„œ μ“Έ λ•ŒλŠ” κ°μ²΄λŠ” λΆ„λ¦¬ν•΄μ„œ μ‚¬μš©ν•  수 μ—†λ‹€λŠ” 인식이 λ°•ν˜€λ²„λ¦° 것 κ°™λ‹€. (μ•„λ§ˆ κ°μ²΄λŠ” 값을 λͺ¨λ‘ ν™•μΈν•˜λ €λ©΄ for...in 만 써야 ν•œλ‹€λŠ” 사싀에 λ„ˆλ¬΄ μ‚¬λ‘œμž‘νžŒ λ“―.) 일단 for λ¬Έ λ£¨ν”„λ‘œ obj[str[i]] += 1 ν˜•μ‹μœΌλ‘œ 접근해도 값을 μ‘°μ ˆν•  수 μžˆλ‹€λŠ” 것 기얡해두기. (객체 21번 μ—¬λŸ¬ 번 볡슡!)

0개의 λŒ“κΈ€