자바스크립트 변수에 대한 접근 제어

자바스크립트는 동적인 특성을 가진 언어로, 변수에 언제든지 접근하고 조작할 수 있습니다. 그러나 때로는 변수에 대한 접근을 제한하고, 데이터의 안정성과 보안을 강화하기 위해 추가적인 접근 제어가 필요할 수 있습니다. 이번 블로그 포스트에서는 자바스크립트 변수에 대한 접근 제어에 대해 알아보도록 하겠습니다.

전역 변수와 지역 변수

자바스크립트에서 변수는 전역 변수 혹은 지역 변수로 선언될 수 있습니다. 전역 변수는 어디에서든 접근이 가능하고, 지역 변수는 특정 범위(함수 내부)에서만 접근이 가능합니다.

var globalVariable = 100; // 전역 변수

function someFunction() {
  var localVariable = 200; // 지역 변수
  console.log(globalVariable); // 접근 가능
  console.log(localVariable); // 접근 가능
}

console.log(globalVariable); // 접근 가능
console.log(localVariable); // 접근 불가 (ReferenceError)

변수에 대한 읽기 전용 접근 제어

간혹 변수의 값을 변경하지 못하도록 읽기 전용으로 설정해야 할 때가 있습니다. 이를 위해 const 키워드를 사용하여 읽기 전용 변수를 선언할 수 있습니다.

const PI = 3.14;
console.log(PI); // 3.14
PI = 3; // TypeError: Assignment to constant variable.

변수에 대한 보호된 접근 제어

변수에 대한 보호된 접근 제어를 위해 자바스크립트는 클로저(closure)를 활용할 수 있습니다. 클로저는 외부 함수의 변수를 참조하는 내부 함수로, 외부 함수에 접근 권한을 부여하거나 제한할 수 있습니다.

function secretFunction() {
  var secretVariable = "I am a secret";
  
  function getSecret() {
    return secretVariable;
  }

  return getSecret;
}

var secret = secretFunction();
console.log(secret()); // "I am a secret"
console.log(secretVariable); // 접근 불가 (ReferenceError)

접근 제어 패턴

자바스크립트에서 변수에 대한 접근을 제어하기 위해 다양한 패턴들이 존재합니다. 몇 가지 대표적인 패턴들을 알아보겠습니다.

모듈 패턴

모듈 패턴은 변수를 캡슐화하고 접근을 제한하여 은닉성을 제공하는 패턴입니다. 함수 내부에 변수와 함수를 정의하고, 외부에 필요한 메서드만 노출시킴으로써 변수에 대한 접근을 제한할 수 있습니다.

var module = (function() {
  var privateVariable = "I am private";

  function privateMethod() {
    console.log(privateVariable);
  }

  return {
    publicMethod: function() {
      privateMethod();
    }
  }
})();

module.publicMethod(); // "I am private"
module.privateVariable; // 접근 불가 (undefined)
module.privateMethod; // 접근 불가 (undefined)

객체 프로퍼티의 접근자 메서드 (getter와 setter)

ES5부터는 객체의 프로퍼티에 접근하는 과정에 접근자 메서드를 활용할 수 있게 되었습니다. 이를 통해 변수에 대한 접근을 제어하고 추가적인 로직을 수행할 수 있습니다.

var person = {
  firstName: "John",
  lastName: "Doe",
  get fullName() {
    return `${this.firstName} ${this.lastName}`;
  },
  set fullName(name) {
    const [firstName, lastName] = name.split(" ");
    this.firstName = firstName;
    this.lastName = lastName;
  }
};

console.log(person.fullName); // "John Doe"
person.fullName = "Jane Smith";
console.log(person.fullName); // "Jane Smith"

마무리

자바스크립트에서 변수에 대한 접근 제어는 데이터의 보안과 안정성을 강화하는 데 있어 중요한 역할을 합니다. 전역 변수와 지역 변수로 범위를 구분하고, const 키워드를 사용하여 읽기 전용 변수를 생성할 수 있습니다. 또한 클로저나 접근자 메서드를 활용하여 접근 제어를 구현할 수 있습니다.

더 나아가서는 모듈 패턴 등 다양한 접근 제어 패턴을 익히고 활용함으로써 높은 수준의 접근 제어를 구현할 수 있습니다. 변수에 대한 접근 제어는 자바스크립트 개발에서 중요한 부분이므로, 항상 생각하고 적절한 접근 제어를 구현하는 것을 권장합니다.