자바스크립트의 클로저

많은 JS 개발자들이 이 멋진 개념을 이해하는 데 머리를 긁적이게 만드는 Closures에 대한 이 블로그에 오신 것을 환영합니다.
보여줄게-
  • 폐쇄가 무엇입니까?

  • 2. 클로저 사용의 장점은 무엇입니까?

    폐쇄란 무엇입니까?



    클로저는 어휘 환경과 함께 번들로 제공되는 기능의 조합입니다. 어휘 환경이란 함수가 주변 상태에 대한 참조로 묶이거나 묶인 것을 의미합니다.
    간단히 말해서 클로저는 내부 함수에서 외부 함수의 범위에 대한 액세스를 제공한다는 것입니다.

    1.스니펫-




    function outer() {
        let a = 100;
        function inner() {
            console.log(a)
        }
        inner()
    }
    outer()
    


    inner()가 outer()로 클로저를 형성하고 외부 함수의 범위에 대한 참조를 유지하기 때문에 이것은 100을 출력합니다.

    2.스니펫-




    function outer() {
        var a = 100;
        return function inner() {
            console.log(a)
        }
    
    }
    var closure=outer()()
    


    이것은 외부 함수를 호출할 때 이 스니펫의 마지막 줄인 호출된 내부 함수를 반환하기 때문에 100을 출력합니다. 일단 호출되면 주변 함수의 참조를 유지하므로 여전히 100을 반환합니다.

    3.스니펫-




    function outer() {
        let a = 100;
        return function inner() {
            console.log(a)
        }
    
    }
    var closure=outer()()
    


    클로저의 장점은 'let' 변수에서도 작동한다는 것입니다.
    우리가 알고 있듯이 let은 블록 범위가 있으므로 블록 외부에서 undefined를 반환해야 하지만 클로저 때문에 여전히 100을 인쇄합니다.

    4.스니펫-




    function grandparent(){
        let b=200;
        function parent() {
            let a = 100;
            return function child() {
                console.log(a,b)
            }
    
        }
       return parent()
    }
    
    var closure=grandparent()()
    


    이 코드 스니펫의 출력은 100,200이 될 것입니다. 왜냐하면 자식은 부모 및 조부모 기능인 주변 기능과 함께 클로저를 형성하고 따라서 grandparent()가 외부에서 실행될 때 child()는 이 두 기능을 모두 사용하여 클로저를 형성하기 때문입니다.

    지금쯤이면 폐쇄의 느낌을 얻었을 것입니다.
    기본적으로 폐쇄는 여러 면에서 도움이 됩니다. 장점을 살펴보겠습니다.

    장점?



    클로저는 데이터 은닉 및 캡슐화를 달성하는 방법을 제공하므로 클로저를 형성하는 범위는 외부에서 액세스할 수 없고 비공개로 유지됩니다.

    1.스니펫-




    function maths(a,b){
      return  function add(){
            console.log(a*b)
        }
    }
    maths(10,30)()
    console.log(a,b)
    


    이 코드 조각의 출력은 maths(10,30)()에서 300이 될 것입니다. add()가 maths(a,b) 및 해당 인수로 클로저를 형성하기 때문입니다.
    그러나 console.log(a,b)는 클로저 범위가 외부에 숨겨져 있고 add()를 호출해야만 액세스할 수 있기 때문에 Reference Error를 반환합니다.
    따라서 데이터를 숨기고 비공개로 유지하는 데 도움이 됩니다.

    좋은 웹페이지 즐겨찾기