ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • scope 란
    자료 정리 2020. 2. 20. 15:43
    function fun(text){
     let block = "block";
     var test  = "test";
     console.log("test : " + test);
     console.log("Text : " + text);
     console.log("block : " + block);
    }
    fun("umm");
    console.log("test2 : " + test);
    console.log("block2 : " + block);
    /*
    test : test'
    'Text : umm'
    'block : block'
    ReferenceError: test is not defined
    ReferenceError: block is not defined
    */

    scope는 범위라는 뜻을 가지고 있습니다.

    js에서도 scope는 범위, 유효 범위의 뜻하고 있습니다.

    js의 유효범위가 어디까지 허용되는지를 알아야지 변수 선언이나 함수 선언을 알맞게 사용 할 수 있습니다.

    (저번에 작성했던 변수 선언 var, let, const소개 중 {}를 뜻하던 것이 바로 이번에 다루는 scope를 뜻하는 것 이였습니다. 쉽게 설명하기 위해..)

    js에서 쓰이는 scope의 종류는 global, local scope 2가지 있습니다.

    global

    위의 사진에서 제일 큰 박스에 해당하는 것이 바로 global scope입니다.이처럼 global스코프는 맨 바깥 쪽에 위치 하는 스코프 입니다.

    맨 바깥쪽에 변수나 함수를 선언하면 global에 선언하게 되는 것입니다.

    function TestFunc () {
      var test2 = "test2";
      console.log("in testFunc : " + test);
    }
    
    TestFunc();
    console.log("global : " + test);
    console.log("global : "+ test2);
    /*
    'in testFunc : test'
    'global : test'
    ReferenceError: test2 is not defined
    */

    이처럼 global에 선언을 하면 그 뒤에 선언 되는 함수에서 모두 사용 할 수 있게 됩니다. 하지만 만약 선언 한 함수 내에서 선언된 다른 변수나 함수는 건들 수 없습니다.

    요약 : global에 선언을 하면 선언된 것들은 다음에 선언 될 것들의 영향을 줄 수 만 있습니다. 만약 다른 스코프안에서 선언된 함수나 변수를 끌어서 global에서는 사용 할 수 없습니다.

    local

    local에는 두가지가 있습니다. function이랑 block 으로

    function

    function fun(text){
     let block = "block";
     var test  = "test";
     console.log("test : " + test);
     console.log("Text : " + text);
     console.log("block : " + block);
    }
    fun("umm");
    console.log("test2 : " + test);
    console.log("block2 : " + block);
    /*
    test : test'
    'Text : umm'
    'block : block'
    ReferenceError: test is not defined
    ReferenceError: block is not defined
    */

    block

    {
     let block = "block";
     var test = "test";
     console.log("block : " + block);
    }
    console.log("test : " + test);
    console.log("block2 : " + block);
    
    /*
    'block : block'
    'test : test'
    ReferenceError: block is not defined
    */

    var로 선언은 함수 스코프를 기준으로 하기 때문에 block scope안에서는 var로 선언을 하면 바깥의 global로 호이스팅이 되어 global에서도 선언을 한 것과 같이 test변수를 console에서 볼 수 있습니다.

    '자료 정리' 카테고리의 다른 글

    Sequelize 1 : N 관계 설정, Cascade 적용  (0) 2020.02.26
    socket.io ( node.js )  (0) 2020.02.25
    let, const , var 비교 분석  (0) 2020.02.21
    Javascript의 장, 단점  (0) 2020.02.20
    Morgan이란?  (0) 2020.02.14

    댓글

Designed by Tistory.