๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒŒ | WEB DEV/Vanilla JS

JS_๋ฌธ๋ฒ• (4)_Scope

by KASSID 2022. 2. 17.

๋ชฉ์ฐจ

    728x90

    JS์˜ Scope์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž!

    3๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    1. ์ „์—ญ (Global) scope : ์ฝ”๋“œ ์ „์ฒด ๋ฒ”์œ„

    2. ํ•จ์ˆ˜ (Function) scope : ํ•จ์ˆ˜ ๋‚ด์—์„œ์˜ ๋ฒ”์œ„

    3. ๋ธ”๋ก (Block) scope : { } ์ค‘๊ด„ํ˜ธ๋กœ ์ด๋ค„์ง„ ๋ธ”๋ก ๋‚ด์—์„œ์˜ ๋ฒ”์œ„

     

    ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ๋ธ”๋ก scope๊ฐ€ ์žˆ๋‹ค!

     


    ์ „์—ญ scope

    ์™ธ๋ถ€์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜orํ•จ์ˆ˜

    ๋ชจ๋“  ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

     

    ์ด๋•Œ ๋ธ”๋ก๊นŒ์ง€๋„ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    let a = 1;
    {
        console.log(a)
    }
    console.log(a)
    
    >>>
    1 //๋ธ”๋ก ์•ˆ์—์„œ ์ถœ๋ ฅ
    1 //๋ธ”๋ก ๋ฐ–์—์„œ ์ถœ๋ ฅ

     

    ์ „์—ญ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ์•ˆ์˜ ๋ธ”๋ก๊นŒ์ง€๋„ ์ ์šฉ์ด ๋œ๋‹ค.

    let a = 1;
    {
        let b = 2;
        console.log(a)
        {
            console.log(a)
            console.log(b)
        }
    }
    console.log(a)
    //console.log(b) //๋ธ”๋ก ์•ˆ์—์„œ ์„ ์–ธ์ด ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜
    
    >>>
    1 //์ž์‹๋ธ”๋ก์—์„œ ์ถœ๋ ฅ
    1 //์ž์†๋ธ”๋ก์—์„œ ์ถœ๋ ฅ
    2 //์ž์‹์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ ์ถœ๋ ฅ
    1

     

    if, for๋ฌธ ์—ญ์‹œ ๋ธ”๋ก( { }๊ด„ํ˜ธ )์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ

    ํ•ด๋‹น ๋ธ”๋ก ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋“ค์€

    ๋ธ”๋กscope๊ฐ€ ์ ์šฉ์ด ๋œ๋‹ค.

    let v1 = 1
    if (v1 == 1){
        let v2 = 2
        console.log(v2)
    }
    // console.log(v2) ์˜ค๋ฅ˜๋ฐœ์ƒ
    
    >>>
    2

     

    ํ•จ์ˆ˜ ์„ ์–ธ๋„ ๋‹น์—ฐํžˆ ๋งˆ์ฐฌ๊ฐ€์ง€!

    { }๊ด„ํ˜ธ๊ฐ€ ์žˆ์œผ๋ฉด ๋ธ”๋ก์ด๋‹ค.

    let v1 = function() {
        let v2 = 2
        console.log(v2)
    }
    v1()
    //console.log(v2) ์˜ค๋ฅ˜๋ฐœ์ƒ
    
    >>>
    2

     

    ์ •๋ฆฌํ•˜๋ฉด

    ๋ธ”๋ก ์•ˆ์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜orํ•จ์ˆ˜๋Š”

    ํ•ด๋‹น ๋ธ”๋ก ๋ฐ–์—์„œ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค.

     


    var ํ‚ค์›Œ๋“œ์™€ ํ•จ์ˆ˜ scope

    var์€ ํ•จ์ˆ˜ scope๋ฅผ ๊ฐ€์ง„๋‹ค.

    (๋ธ”๋ก ๋‚ด์—์„œ ์ •์˜ํ•œ ๊ฒƒ์ด ์™ธ๋ถ€์—์„œ๋„ ์œ ํšจํ•จ.

    ์ด๋ฅผ ํ•จ์ˆ˜ scope๋ผ๊ณ  ํ•œ๋‹ค!)

    {
        {
            var a = 1;
        }
        console.log(a)
    }

     

    ์ด๋•Œ

    ํ•จ์ˆ˜ ์•ˆ์—์„œ ์„ ์–ธํ•œ var์€

    ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค.

    data = 1;
    function func(params) {
        var d = 1;
        console.log(data)
    }
    console.log(d) // ์˜ค๋ฅ˜๋ฐœ์ƒ

    ๋Œ“๊ธ€