Skip to content

Latest commit

Β 

History

History
62 lines (44 loc) Β· 1.74 KB

File metadata and controls

62 lines (44 loc) Β· 1.74 KB

λ³€μˆ˜ μ„ μ–Έ 방식: var

1. varλŠ” const, letκ³Ό 달리 블둝 μŠ€μ½”ν”„λ₯Ό κ°€μ§€μ§€ μ•ŠλŠ”λ‹€.

  • μ „μ—­ μŠ€μ½”ν”„ λ˜λŠ” ν•¨μˆ˜ μŠ€μ½”ν”„ λ₯Ό κ°€μ§„λ‹€.

  • if, forλ¬Έ λ“±μ˜ μ½”λ“œ λΈ”λŸ­μ€ λΈ”λŸ­ μˆ˜μ€€μ˜ λ ‰μ‹œμ»¬ ν™˜κ²½μ΄ λ§Œλ“€μ–΄μ§€μ§€ μ•Šμ•„ 관톡됨에 μ£Όμ˜ν•œλ‹€.

    // μ „μ—­ μŠ€μ½”ν”„ μ˜ˆμ‹œ
    if (true) {
      var test = false;
    }
    
    alert(test);  // false. if 블둝이 λλ‚¬μ§€λ§Œ μ ‘κ·Ό κ°€λŠ₯ν•˜λ‹€.
    // ν•¨μˆ˜ μŠ€μ½”ν”„ μ˜ˆμ‹œ (ν•¨μˆ˜ 레벨 λ³€μˆ˜)
    function isPayment() {
      if (true) {
        var isPayment = true;
      }
    
      alert(isPayment);   // μ œλŒ€λ‘œ 값을 좜λ ₯ν•œλ‹€.
    }
    
    isPayment();
    alert(isPayment);   // ReferenceError: phrase is not defined

2. λ³€μˆ˜μ˜ 쀑볡 선언을 λ¬΄ν•œλŒ€λ‘œ ν—ˆμš©ν•œλ‹€.

3. ν˜Έμ΄μŠ€νŒ… - μ„ μ–Έ 전에도 μ‚¬μš©κ°€λŠ₯ν•œ var

```js
function isPayment() {
  isPayment = true;

  alert(isPayment);

  var isPayment;
}

isPayment();
```
  • ν•¨μˆ˜ μŠ€μ½”ν”„ λ‚΄μ—μ„œ var둜 μ„ μ–Έν•œ λͺ¨λ“  λ³€μˆ˜λŠ” ν•¨μˆ˜μ˜ μ΅œμƒλ‹¨μ— λŒμ–΄ μ˜¬λ €μ§€κΈ°(hoisted) λ•Œλ¬Έμ— μ„ μ–Έ 전에도 μ‚¬μš©κ°€λŠ₯ν•˜λ‹€.

  • 단, 선언은 ν˜Έμ΄μŠ€νŒ… λ˜μ§€λ§Œ 할당은 ν˜Έμ΄μŠ€νŒ… λ˜μ§€ μ•ŠλŠ”λ‹€.

4. μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜ ν‘œν˜„μ‹ (IIFE)

  • var도 블둝 레벨 μŠ€μ½”ν”„λ₯Ό κ°€μ§ˆ 수 있게 μ„€μ •ν•˜λŠ” μ‹€ν–‰ ν•¨μˆ˜ ν‘œν˜„μ‹μ„ λ§ν•œλ‹€.
  • ν•¨μˆ˜ ν‘œν˜„μ‹μ„ λ§Œλ“€κ³  λ°”λ‘œ ν˜ΈμΆœν•˜μ—¬ μ‹€ν–‰ν•˜λŠ” ꡬ쑰이며, μžμ‹ λ§Œμ˜ λ³€μˆ˜λ₯Ό κ°€μ§€κ³  μžˆλ‹€.
(function() {

let sayHello = "Hello";

alert(sayHello); // Hello

})();