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

μžλ°”μŠ€ν¬λ¦½νŠΈ : μ „μ—­ λ³€μˆ˜μ™€ 지역 λ³€μˆ˜

by μ½”νŒŒμΉ΄ 2022. 7. 28.
728x90

μ „μ—­ λ³€μˆ˜μ™€ 지역 λ³€μˆ˜

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


μ „μ—­ λ³€μˆ˜μ™€ 지역 λ³€μˆ˜ μ„ μ–Έ μœ„μΉ˜

var kor = 90;
function getScore() {
    kor = 100;              //μ „μ—­ λ³€μˆ˜
    document.write(kor);     //100 
}
getScore();
document.write(kor);         //100
μœ„μ˜ μ˜ˆμ‹œμ—μ„œ ν•¨μˆ˜ 블둝{} μ•ˆμ— μžˆλŠ” kor λ³€μˆ˜λŠ” μ „μ—­ λ³€μˆ˜μž…λ‹ˆλ‹€. λ”°λΌμ„œ getScor() ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κ²Œ 되면 kor λ³€μˆ˜μ˜ 값이 90μ—μ„œ 100으둜 λ°”λ€Œκ²Œ λ©λ‹ˆλ‹€.

var kor = 90;
function getScore() {
    var kor = 100;            //지역 λ³€μˆ˜
    document.write(kor);      //100
}
getScore();
document.write(kor);      //100
μœ„μ˜ μ˜ˆμ‹œμ—μ„œλŠ” ν•¨μˆ˜ 블둝{} μ•ˆμ˜ kor λ³€μˆ˜λ₯Ό var둜 μ •μ˜ν–ˆμŠ΅λ‹ˆλ‹€. ν•¨μˆ˜ 블둝{} μ•ˆμ—μ„œ var둜 μ„ μ–Έλœ λ³€μˆ˜λŠ” 지역 λ³€μˆ˜κ°€ 되며, 지역 λ³€μˆ˜λŠ” ν•¨μˆ˜ 블둝{} λ°–μ˜ μ „μ—­ λ³€μˆ˜ korκ³ΌλŠ” λ‹€λ₯Έ λ³„λ„μ˜ λ³€μˆ˜κ°€ λ©λ‹ˆλ‹€. ν•¨μˆ˜μ˜ 지역 λ³€μˆ˜λŠ” ν•¨μˆ˜ 블둝{} λ°–μ—μ„œ μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ 블둝{}에 μ˜ν•΄ λ³€μˆ˜μ˜ λ²”μœ„κ°€ λ‹¬λΌμ§€λŠ” 것을 λ³€μˆ˜μ˜ scope라고 ν•©λ‹ˆλ‹€.

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

varλŠ” ν•¨μˆ˜ 블둝{}μ—μ„œλ§Œ 지역 λ³€μˆ˜κ°€ μ‘΄μž¬ν•˜λ©°, 블둝{}μ΄λ‚˜ μ œμ–΄λ¬Έ 블둝{}μ—μ„œλŠ” 지역 λ³€μˆ˜κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ECMAScript 2015(ES6)μ—μ„œ μƒˆλ‘œ μΆ”κ°€λœ letκ³Ό constλŠ” 블둝{}μ΄λ‚˜ μ œμ–΄λ¬Έ 블둝{}μ—μ„œλ„ 지역 λ³€μˆ˜λ₯Ό μ„ μ–Έν•  수 μžˆμŠ΅λ‹ˆλ‹€.
let num = 10;
{
    let num = 20;            //num은 지역 λ³€μˆ˜
    document.write(num);    //20
}
document.write(num);    //20
var num = 10;
{
    var num = 20;            //num은 μ „μ—­ λ³€μˆ˜
    document.write(num);    //20
}
document.write(num);    //20
const num = 10;
{
    const num = 20;          //num은 지역 λ³€μˆ˜
    document.write(num);    //20
}
document.write(num);    //20

μœ„ μ˜ˆμ‹œμ— λ‚˜νƒ€λ‚œ κ²ƒμ²˜λŸΌ, 블둝{} μ•ˆμ—μ„œ letκ³Ό const둜 μ„ μ–Έλœ λ³€μˆ˜λŠ” 블둝 {}의 지역 λ³€μˆ˜λ‘œ μΈμ‹ν•©λ‹ˆλ‹€.


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

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

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

let num2 = 70;
if (num2 === 70) {
    let num2 = 80;
    document.write('지역' + num2);        //지역80
}
document.write('μ „μ—­' + num2);        //μ „μ—­70

var, let, const 비ꡐ 정리

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

λŒ“κΈ€

κ°μ‚¬ν•©λ‹ˆλ‹€. πŸ¦™

CSS
κ΄‘κ³  쀀비쀑