[10λΆ„ ν…Œμ½”ν†‘] πŸ’™ ν•˜λ£¨μ˜ 살ᄒᅒᆼ ᄏα…₯ᆫ텍스트

JIWOO YUNΒ·2023λ…„ 4μ›” 5일
0
post-custom-banner

movie


ν˜Έμ΄μŠ€νŒ…ν˜„μƒ

  • 선언문이 마치 μ΅œμƒλ‹¨μ— λŒμ–΄μ˜¬λ €μ§„ λ“―ν•œ ν˜„μƒ

  • console.log(TVChannel); // undefined 좜λ ₯
    
    var TVChannel = "NetFlix"
  • μžλ°” 슀크립트 엔진이 λ¨Όμ € 전체 μ½”λ“œλ₯Ό μŠ€μΊ”ν•΄μ„œ λ³€μˆ˜ 같은 정보λ₯Ό μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ Record(ν™˜κ²½ record)에 미리 μ €μž₯μ‹œμΌœμ€€λ‹€.

    • ν™˜κ²½ λ ˆμ½”λ“œ ? ==> μ‹λ³„μžμ™€ μ‹λ³„μžμ— λ°”μΈλ”©λœ 값을 기둝해쀀닀.
  • ν˜Έμ΄μŠ€νŒ…μ€ 2가지가 μ‘΄μž¬ν•œλ‹€.

    • Variable Hoisting (λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…)

      • var 와 let ,const 의 경우 쑴재

        • var (μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™” λ™μ‹œμ— λ°œμƒ)

          • 본격적인 싀행에 μ•žμ„œμ„œ λ¨Όμ € μŠ€ν‚¨μ„ν•˜κ³  생성(생성단계)을 ν•œλ‹€μŒ undefined둜 μ±„μ›Œλ„£μ–΄μ€€λ‹€.
          • κ·Έν›„ μ„ μ–Έλ¬Έ μ™Έμ˜ λ‚˜λ¨Έμ§€ μ½”λ“œλ₯Ό 순차적으둜 μ‹€ν–‰(μ‹€ν–‰ 단계)
          • μƒμ„±λ‹¨κ³„μ—μ„œ μƒμ„±ν•œ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•˜κ±°λ‚˜ μ—…λ°μ΄νŠΈλ₯Ό μ§„ν–‰ν•œλ‹€.
          • μœ„μͺ½μ˜ μ½”λ“œ μ˜ˆμ‹œ
        • let,const (μ„ μ–Έλ§Œ λ°œμƒ)

          • μ΄κ²½μš°μ—λŠ” λ³€μˆ˜λŠ” λ§Œλ“€μ§€λ§Œ μ΄ˆκΈ°ν™”λŠ” μ§„ν–‰ν•˜μ§€μ•ŠλŠ”λ‹€ .

            • κ·Έλ ‡κΈ° 떄문에 console.logκ°€ λ³€μˆ˜κ°€ μ„ μ–Έλ˜κ³  값을 넣기전에 μ‹€ν–‰λ˜λ©΄ reference error κ°€ λ°œμƒ

            • console.log(TVChannel); // -> reference error λ°œμƒ
              
              //이μͺ½ 뢀뢄을 μΌμ‹œμ  μ‚¬κ°μ§€λŒ€λ‘œ λΆ€λ₯Έλ‹€.
              ---
              const TVChannel = "NetFlix"
    • Function Hoisting(ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…)

    • var νƒ€μž…μ˜ ν•¨μˆ˜μ˜ 경우 μ„ μ–Έλ¬Έ 이전에 μ‹€ν–‰ν•˜λ €ν•˜λ©΄ ν•¨μˆ˜μ˜ 값은 undefinedμ΄μ§€λ§Œ undefinedλΌλŠ” λ°μ΄ν„°νƒ€μž…μ€ ν•¨μˆ˜μ™€ 달리 호좜이 λΆˆκ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— νƒ€μž… μ—λŸ¬ λ°œμƒ

    • study() // νƒ€μž… μ—λŸ¬ λ°œμƒ
      
      var study(){
          
      };
    • constλŠ” reference error λ°œμƒ

    • study() // referenec Error λ°œμƒ
      
      --// μΌμ‹œμ  μ‚¬κ°μ§€λŒ€
      const study(){
          
      };
      
    • function(ν•¨μˆ˜ μ„ μ–Έλ¬Έ) 으둜 ν•¨μˆ˜λ₯Ό λ§Œλ“€μ‹œ studyν•¨μˆ˜ μ„ μ–Έκ³Ό λ™μ‹œμ— μ™„μ„±λœ 객체λ₯Ό ν™˜κ²½λ ˆμ½”λ“œμ— 기둝

      • 이둜 인해 μ—λŸ¬μ—†μ΄ μ‹€ν–‰μ΄λœλ‹€.
      • ν•¨μˆ˜ μ„ μ–Έλ¬Έ -> μ„ μ–Έκ³Ό λ™μ‹œμ— ν•¨μˆ˜κ°€ μƒμ„±λ˜μ–΄ μ„ μ–Έ 전에도 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  μˆ˜μžˆλ‹€.

Outer둜 JS μŠ€μ½”ν”„μ²΄μ΄λ‹ μ΄ν•΄ν•˜κΈ°

Outer : μ™ΈλΆ€ ν™˜κ²½ μ°Έμ‘°

  • λ°”κΉ₯ Lexical ν™˜κ²½μ„ 가리킨닀 (μ •μ ν™˜κ²½μ΄λΌκ³ λ„ν•œλ‹€.)
  • μ›μΉ™μ μœΌλ‘œ ν˜„μž¬ μ‹€ν–‰λ˜λŠ” μ‹€ν–‰μ»¨ν…μŠ€νŠΈμ—μ„œ λ¨Όμ € 찾은 λ‹€μŒμ— μ—†λŠ” 경우 outer인 이전 μ»¨ν…μŠ€νŠΈλ₯Ό μ°ΎλŠ”λ‹€-> 이전것에도 μ—†λŠ” 경우 κ·Έ μ „ 것을 μ°ΎλŠ”λ‹€. -> λ§Œμ•½ μžˆλŠ”κ²½μš° κ·Έμ•„λž˜μ— 같은 μ‹λ³„μžκ°€ μ‘΄μž¬ν•΄λ„ μ°Ύμ§€μ•Šκ³  좜λ ₯ν•˜κ³  끝내버린닀 -> 이걸 λ³€μˆ˜ μ„€λ„μž‰μ΄λΌκ³  ν•œλ‹€.
    • 맨 μ΅œμƒμœ„μΈ Global Execution ContextκΉŒμ§€ κ°”λŠ”λ° μ—†λŠ”κ²½μš° 이 λ³€μˆ˜λŠ” μ—†λŠ” κ²ƒμœΌλ‘œ νŒλ‹¨ν•˜κ³  reference Errorλ₯Ό μ°λŠ”λ‹€.
    • λ³€μˆ˜ μ„€λ„μž‰
      • λ™μΌν•œ μ‹λ³„μžλ‘œ 인해 μƒμœ„ μŠ€μ½”ν”„μ—μ„œ μ„ μ–Έλœ μ‹λ³„μžμ˜ 값이 κ°€λ €μ§€λŠ” ν˜„μƒ

μ‹λ³„μž κ²°μ •

  • μ½”λ“œμ—μ„œ λ³€μˆ˜λ‚˜ ν•¨μˆ˜μ˜ 값을 κ²°μ •ν•˜λŠ”κ²ƒ

정리

μ‹€ν–‰μ»¨ν…μŠ€νŠΈλž€?

  • μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λŠ”λ° ν•„μš”ν•œ ν™˜κ²½μ„ μ œκ³΅ν•˜λŠ” 객체
  • μ‹λ³„μžλ₯Ό λ”μš± 효율적으둜 ν•˜κΈ° μœ„ν•œ μˆ˜λ‹¨.
profile
μ—΄μ‹¬νžˆν•˜μž
post-custom-banner

0개의 λŒ“κΈ€