function - JavaScript parameter 전달 - JavaScript 클로저는 어떻게 작동합니까?

JavaScript arguments 전달 / javascript / variables / scope / closures

JavaScript 클로저가 구성되는 개념 (예 : 함수, 변수 등)을 알고 있지만 클로저 자체를 이해하지 못하는 사람에게 어떻게 설명 하시겠습니까?

28 revs, 21 users 17%



Answer #1

클로저는 종종 숨겨진 개인 데이터로 함수를 만드는 데 사용됩니다 (항상 그런 것은 아닙니다).

var db = (function() {
    // 데이터를 보관할 숨겨진 개체를 만듭니다.
    // 외부에서 접근 할 수 없습니다.
    var data = {};

    // 데이터에 대한 액세스를 제공하는 함수를 만듭니다.
    return function(key, val) {
        if (val === undefined) { return data[key] } // 가져 오기
        else { return data[key] = val } // 설정
    }
    // 익명의 주변 함수를 호출합니다.
    // 클로저 인 위의 내부 함수를 반환합니다.
})();

db('x')    //-> 정의되지 않음
db('x', 1) // x를 1로 설정
db('x')    // -> 1
// 데이터 객체 자체에 액세스하는 것은 불가능합니다.
// 개별적으로 가져 오거나 설정할 수 있습니다.