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

μ§€μ—­ν•¨μˆ˜μ™€ μ „μ—­ν•¨μˆ˜

by _토맀토 2022. 7. 29.
728x90

μžλ°”μŠ€ν¬λ¦½νŠΈ μ „μ—­λ³€μˆ˜ / μ§€μ—­λ³€μˆ˜

λ³€μˆ˜λŠ” ν•¨μˆ˜λΈ”λ‘ {}을 κΈ°μ€€μœΌλ‘œ λ³€μˆ˜μ˜ μ„ μ–Έ μœ„μΉ˜μ— 따라 μ „μ—­λ³€μˆ˜μ™€ μ§€μ—­λ³€μˆ˜λ‘œ λ‚˜λˆ„μ–΄ 진닀.

μ „μ—­λ³€μˆ˜ : μ „μ—­ λ³€μˆ˜λŠ” ν•¨μˆ˜ 블둝 {} λ°–μ΄λ‚˜ μ•ˆμ—μ„œ 자유둭게 μ‚¬μš© κ°€λŠ₯
μ§€μ—­λ³€μˆ˜ : 지역 λ³€μˆ˜λŠ” ν•¨μˆ˜ 블둝 {} λ‚΄μ—μ„œλ§Œ μ‚¬μš© ν•  수 μžˆλ‹€.

β–ΆοΈŽ μ „μ—­λ³€μˆ˜μ™€ μ§€μ—­λ³€μˆ˜ μ„ μ–Έ μœ„μΉ˜

μ „μ—­ λ³€μˆ˜ 지역 λ³€μˆ˜
var λ³€μˆ˜;
     function ν•¨μˆ˜ () {
}
function ν•¨μˆ˜ () {
     var λ³€μˆ˜;
}

01. μ „μ—­λ³€μˆ˜ μ˜ˆμ‹œ 문제

kor λ³€μˆ˜μ˜ 값을 90μ—μ„œ 100으둜 λ°”κΎΈκΈ°

{
    var kor = 90;
    function getScore() {
       kor = 100; //μ „μ—­λ³€μˆ˜
       console.log(kor);
    }
    getScore();
    console.log(kor);
}
결과 보기
100
100

kor λ³€μˆ˜λŠ” ν•¨μˆ˜ 블둝 μ•ˆμ— 있기 λ•Œλ¬Έμ— μ „μ—­ λ³€μˆ˜μ΄λ‹€.
λ”°λΌμ„œ getScore() ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κ²Œ 되면 kor λ³€μˆ˜μ˜ 값이 90μ—μ„œ 100으둜 λ°”λ€Œκ²Œ λœλ‹€.

02. μ „μ—­λ³€μˆ˜ μ˜ˆμ‹œ 문제

kor λ³€μˆ˜μ˜ 값을 90μ—μ„œ 100으둜 λ°”κΎΈκΈ°

const func(){
     document.write("μ‹€ν–‰λ¬Έ");
}
func();

{
    var kor = 90;
    function getScore() {
       var kor = 100; //μ§€μ—­λ³€μˆ˜
       console.log(kor);
    }
    getScore();
    console.log(kor);
}
결과 보기
100
90

kor λ³€μˆ˜κ°€ κ·ΈλŒ€λ‘œ 90으둜 좜λ ₯ 된 μ΄μœ λŠ” ν•¨μˆ˜ 블둝 {} μ•ˆμ—μ„œ kor λ³€μˆ˜λ₯Ό var둜 λ‹€μ‹œ μ •μ˜ν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€.
이 λ•Œ κΈ°μ‘΄ kor λ³€μˆ˜μ™€ ν•¨μˆ˜ 블둝 {} μ•ˆμ˜ korλ³€μˆ˜λŠ” μ„œλ‘œ λ‹€λ₯Έ λ³„λ„μ˜ ν•¨μˆ˜κ°€ 되기 λ•Œλ¬Έμ— λ³€μˆ˜μ˜ 값이 λ°”λ€Œμ§€ μ•Šμ€ 것이닀.

ν•¨μˆ˜ 블둝 μ•ˆμ˜ 지역 λ³€μˆ˜λŠ” λ°˜λ“œμ‹œ var둜 μ •μ˜ν•΄μ•Ό ν•œλ‹€. λ˜ν•œ 지역 λ³€μˆ˜λŠ” ν•¨μˆ˜ 블둝 λ°–μ—μ„œλŠ” μ‚¬μš©ν•  수 μ—†λ‹€.
μ΄λ ‡κ²Œ 블둝{}에 μ˜ν•΄ λ³€μˆ˜μ˜ λ²”μœ„κ°€ λ‹¬λΌμ§€λŠ” 것을 λ³€μˆ˜μ˜ μŠ€μ½”ν”„(Scope)라고 ν•œλ‹€.


ν•¨μˆ˜ 레벨 μŠ€μ½”ν”„μ™€ 블둝 레벨 μŠ€μ½”ν”„

varλŠ” ν•¨μˆ˜ 블둝 {} μ•ˆμ—μ„œλ§Œ 지역 λ³€μˆ˜κ°€ μ‘΄μž¬ν•˜λ©° 블둝 {}μ΄λ‚˜ μ œμ–΄λ¬Έ 블둝 {}μ—μ„œλŠ” 지역 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜μ§€ λͺ»ν•œλ‹€.
κ·ΈλŸ¬λ‚˜ es6μ—μ„œ μƒˆλ‘œ μΆ”κ°€λœ letκ³Ό constλŠ” 블둝 {}μ΄λ‚˜ μ œμ–΄λ¬Έ 블둝 {}μ—μ„œλ„ 지역 λ³€μˆ˜λ₯Ό μ„ μ–Έν•  수 μžˆλ‹€.

{
    var num = 10;
    {
        var num = 20;   //num은 μ „μ—­ λ³€μˆ˜
        console.log(num);
    }
    console.log(num);
}
결과 보기
20
20
ν•¨μˆ˜ 블둝{}이 μ•„λ‹ˆλΌμ„œ μ§€μ—­λ³€μˆ˜λ‘œ μΈμ‹ν•˜μ§€ λͺ»ν•œλ‹€.
{
    //let으둜 μ„ μ–Έν•œ 경우
    let num = 10;
    {
        let num = 20;   // 지역 λ³€μˆ˜
        console.log(num);
    }
    console.log(num);

    // const둜 μ„ μ–Έν•œ 경우
    const num = 10;
    {
        const num = 20;   // 지역 λ³€μˆ˜
        console.log(num);
    }
    console.log(num);
}
결과 보기
20
10

이처럼 블둝{} μ•ˆμ—μ„œ letκ³Ό const둜 μ„ μ–Έλœ λ³€μˆ˜λŠ” 지역 λ³€μˆ˜λ‘œ μΈμ‹λœλ‹€.
λ§ˆμ°¬κ°€μ§€λ‘œ μ œμ–΄λ¬Έ 블둝{}일 κ²½μš°μ—λ„ varλŠ” μ „μ—­λ³€μˆ˜μ΄κΈ° λ•Œλ¬Έμ— μ œμ–΄λ¬Έ {} λ°–μ—μ„œλ„ 호좜이 κ°€λŠ₯ν•˜μ§€λ§Œ letκ³Ό constλŠ” μ§€μ—­λ³€μˆ˜λΌμ„œ μ œμ–΄λ¬Έ {} λ°–μ—μ„œλŠ” 호좜이 λΆˆκ°€ν•˜λ‹€.

μ „μ—­λ³€μˆ˜μ™€ μ§€μ—­λ³€μˆ˜ μ˜ˆμ‹œ 문제

ν•¨μˆ˜ 블둝{}κ³Ό 블둝{}의 λ³€μˆ˜λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€

{
    //ν•¨μˆ˜μ˜ μ „μ—­λ³€μˆ˜
    var sum1 = 10;
    function add1() {
        var sum1 = 20;
    }
    add1();
    console.log('μ „μ—­'+ sum1);

    //ν•¨μˆ˜μ˜ μ§€μ—­λ³€μˆ˜
    var sum2 = 30;
    function add2() {
        var sum2 = 40; 
        console.log('지역' + sum2)
    }
    add2();
    console.log('μ „μ—­'+ sum2);

    //λΈ”λ‘μ˜ μ§€μ—­λ³€μˆ˜
    var num1 = 50;
    if( num1 === 50) {
        var num1 = 60;
    }
    console.log('μ „μ—­' + num1);

    let num2 = 70;
    if( num2 === 70) {
        let num2 = 80;
        console.log('지역' + num2);
    }
    console.log('μ „μ—­' + num2);
}
결과 보기
μ „μ—­10
지역40
μ „μ—­30
μ „μ—­60
지역80
μ „μ—­70
console.log()λŠ” 크둬 개발자 도ꡬλ₯Ό 톡해 값을 확인할 수 μžˆλ‹€.

var, let, const 비ꡐ

λ³€μˆ˜ λ²”μœ„ λ³€μˆ˜ μ„ μ–Έ νŠΉμ§•
ν•¨μˆ˜ 레벨 μŠ€μ½”ν”„ var λ³€μˆ˜λ₯Ό μ€‘λ³΅ν•΄μ„œ μ„ μ–Έν•  수 μžˆλ‹€.
ν•¨μˆ˜ 블둝{} λ‚΄μ—μ„œλ§Œ μ§€μ—­λ³€μˆ˜κ°€ μ‘΄μž¬ν•œλ‹€.
블둝 레벨 μŠ€μ½”ν”„ let 같은 블둝{}μ—μ„œλŠ” 이미 μ„ μ–Έν•œ λ³€μˆ˜λ₯Ό μ€‘λ³΅ν•΄μ„œ μ„ μ–Έν•  수 μ—†λ‹€.
블둝{}, μ œμ–΄λ¬Έ 블둝{}μ—μ„œλ„ 지역 λ³€μˆ˜κ°€ μ‘΄μž¬ν•œλ‹€.
const 같은 블둝{}μ—μ„œ 이미 μ„ μ–Έν•œ λ³€μˆ˜λ₯Ό μ€‘λ³΅ν•΄μ„œ μ„ μ–Έν•  수 μ—†κ³ , μ €μž₯ 된 값을 λ³€κ²½ν•  수 μ—†λ‹€.
블둝{}, μ œμ–΄λ¬Έ 블둝{}μ—μ„œλ„ 지역 λ³€μˆ˜κ°€ μ‘΄μž¬ν•œλ‹€.
728x90

'JAVASCRIPT' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[JAVASCRIPT] λ°°μ—΄ λ©”μ„œλ“œ : join(), push(), pop()  (4) 2022.08.11
μš”μ†Œ 선택  (3) 2022.08.07
ν•¨μˆ˜  (4) 2022.07.26
데이터 νƒ€μž…  (3) 2022.07.26
쑰건문  (3) 2022.07.26

λŒ“κΈ€


Lucky Charms Rainbow
js
html
css