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

[JavaScript] μ „μ—­λ³€μˆ˜μ™€ μ§€μ—­λ³€μˆ˜

by 코딩곡책 2022. 7. 28.
λ°˜μ‘ν˜•

μ „μ—­λ³€μˆ˜μ™€ μ§€μ—­λ³€μˆ˜

λ³€μˆ˜λŠ” μ€‘κ΄„ν˜Έ(ν•¨μˆ˜ 블둝){ }λ₯Ό κΈ°μ€€μœΌλ‘œ λ³€μˆ˜ μ„ μ–Έ μœ„μΉ˜μ— 따라 μ „μ—­λ³€μˆ˜μ™€ μ§€μ—­λ³€μˆ˜λ‘œ λ‚˜λ‰œλ‹€.
지역 λ³€μˆ˜λŠ” 블둝 λ‚΄μ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯ν•œ 반면, μ „μ—­λ³€μˆ˜λŠ” 블둝 λ°”κΉ₯μ΄λ‚˜ μ•ˆμͺ½μ΄λ‚˜ 자유둭게 μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.


μ „μ—­λ³€μˆ˜μ™€ μ§€μ—­λ³€μˆ˜μ˜ μ„ μ–Έ μœ„μΉ˜

μ΄λ ‡κ²Œ 블둝 { }에 μ˜ν•΄ λ³€μˆ˜ λ²”μœ„κ°€ λ‹¬λΌμ§€λŠ” 것을 λ³€μˆ˜μ˜ scope(μŠ€μ½”ν”„)라고 ν•œλ‹€.

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

}
function ν•¨μˆ˜ () {
var λ³€μˆ˜;
}

μ˜ˆμ‹œ 01

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

var kor = 90;
function getScroe() {
    kor = 100;   // μ „μ—­λ³€μˆ˜ : λ°”κΉ₯ var kor = 90을 100으둜 λ³€κ²½ν•œκ±°μž„
    console.log(kor);   // κ·Έλž˜μ„œ 100 좜λ ₯됨
}
getScore();
console.log(kor);   // 100

μ˜ˆμ‹œ 02

μ•„λž˜μ˜ μ˜ˆμ‹œμ—μ„œλŠ” ν•¨μˆ˜ 블둝 λ‚΄μ˜ kor λ³€μˆ˜λ₯Ό var둜 μ •μ˜ν–ˆκ³ , var둜 μ„ μ–Έλœ λ³€μˆ˜λŠ” μ§€μ—­λ³€μˆ˜κ°€ λ˜μ–΄ 블둝 λ°”κΉ₯의 μ „μ—­λ³€μˆ˜ korκ³Ό λ‹€λ₯Έ λ³„λ„μ˜ λ³€μˆ˜κ°€ λœλ‹€.

var kor = 90;    // μ „μ—­λ³€μˆ˜
function getScroe() {
    var kor = 100;      // μ§€μ—­λ³€μˆ˜
    console.log(kor);   // 100
}
getScore();
console.log(kor);   // μ—¬κΈ°μ„  μ „μ—­λ³€μˆ˜κ°€ 좜λ ₯λ˜λ―€λ‘œ 90

μ˜ˆμ‹œ 03

ν•¨μˆ˜ 블둝 μ•ˆμ˜ μ§€μ—­λ³€μˆ˜λŠ” λ°˜λ“œμ‹œ var둜 μ„ μ–Έν•΄μ€˜μ•Ό ν•˜λ©° ν•¨μˆ˜μ˜ μ§€μ—­λ³€μˆ˜λŠ” ν•¨μˆ˜ 블둝 λ°”κΉ₯μ—μ„œ μ‚¬μš© λΆˆκ°€λŠ₯ν•˜λ‹€!

function getScroe() {
    var kor = 100;
    console.log(kor);   // 100
}
getScore();
console.log(kor);   // error

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

varλŠ” ν•¨μˆ˜ 블둝 λ‚΄μ—μ„œλ§Œ μ§€μ—­λ³€μˆ˜κ°€ μ‘΄μž¬ν•˜λ©° λΈ”λ‘μ΄λ‚˜ μ œμ–΄λ¬Έ λΈ”λ‘μ—μ„œλŠ” μ§€μ—­λ³€μˆ˜κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.
letκ³Ό constλŠ” λΈ”λ‘μ΄λ‚˜ μ œμ–΄λ¬Έ λΈ”λ‘μ—μ„œλ„ μ§€μ—­λ³€μˆ˜ μ„ μ–Έ κ°€λŠ₯ν•˜λ‹€.

μ˜ˆμ‹œ1 - var :

var num = 10;
{
    var num = 20;       // num은 μ „μ—­λ³€μˆ˜
    console.log(num);   // 20 좜λ ₯
}
console.log(num);       // 20 좜λ ₯

μ˜ˆμ‹œ2 - let :

let num = 10;
{
    let num = 20;       // num은 μ§€μ—­λ³€μˆ˜
    console.log(num);   // 20 좜λ ₯
}
console.log(num);       // 10 좜λ ₯

μ˜ˆμ‹œ3 - const :

const num = 10;
{
    const num = 20;       // num은 μ§€μ—­λ³€μˆ˜
    console.log(num);   // 20 좜λ ₯
}
console.log(num);       // 10 좜λ ₯

μ˜ˆμ‹œ4 - var + ifλ¬Έ :

var num = 10;
if(num === 10) {        // num이 숫자 10κ³Ό μ™„μ „νžˆ μ„±μ§ˆκΉŒμ§€ μΌμΉ˜ν•˜λŠ”κ°€?
    let sum = 20;       // μ „μ—­λ³€μˆ˜
}
console.log(sum);       // 20 좜λ ₯

μ˜ˆμ‹œ5 - let + ifλ¬Έ :

sum λ³€μˆ˜λ₯Ό 블둝 λ°–μ—μ„œλ„ 호좜 κ°€λŠ₯ν•˜λ‚˜ μ œμ–΄λ¬Έ 블둝 μ•ˆμ—μ„œ let으둜 μ„ μ–Έλœ λ³€μˆ˜λŠ” μ§€μ—­λ³€μˆ˜μ΄κΈ° λ•Œλ¬Έμ— μ œμ–΄λ¬Έ 블둝 λ°–μ—μ„œ 호좜 λΆˆκ°€λŠ₯함.

let num = 10;
if(num === 10) {        // num이 숫자 10κ³Ό μ™„μ „νžˆ μ„±μ§ˆκΉŒμ§€ μΌμΉ˜ν•˜λŠ”κ°€?
    let sum = 20;       // μ§€μ—­λ³€μˆ˜
}
console.log(sum);       // error 좜λ ₯

ν•¨μˆ˜μ˜ 지역/μ „μ—­λ³€μˆ˜ + λΈ”λ‘μ˜ μ§€μ—­λ³€μˆ˜

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

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

// λΈ”λ‘μ˜ μ§€μ—­λ³€μˆ˜
var num1 = 50;
if(num1 === 50) {
    var num1 = 60;
}
console.log('μ „μ—­' + num1);     // 60
let num2 = 70;
if(num2 === 70) {
    let num2 = 80;
    console.log('지역' + num2); // 80
}
console.log('μ „μ—­' + num2);     // 70
λ°˜μ‘ν˜•

λŒ“κΈ€


Reference Book

JavaScript
HTML
CSS
κ΄‘κ³  μ€€λΉ„μ€‘μž…λ‹ˆλ‹€.