JavaScript의 정적 변수

Harshit Jindal 2023년10월12일
  1. 함수의 속성을 사용하여 JavaScript에서 정적 변수 만들기
  2. IIFE (Immediately Invoked Function Expression)를 사용하여 JavaScript에서 정적 변수 만들기
  3. arguments.callee를 사용하여 JavaScript에서 정적 변수 만들기
  4. 생성자를 사용하여 JavaScript에서 정적 변수 만들기
JavaScript의 정적 변수

이 자습서에서는 JavaScript에서 정적 변수를 만드는 방법을 소개합니다. 정적 변수는 일반적으로 함수에서 사용되는 변수로, 함수 호출간에 값을 유지합니다. static키워드는 클래스의 정적 속성 또는 메서드를 정의하는 데 도움이됩니다.

함수의 속성을 사용하여 JavaScript에서 정적 변수 만들기

JavaScript의 함수는 객체이며 속성을 가질 수 있습니다. 따라서 함수의 속성을 선언하여 정적 변수를 만들 수 있습니다. 전역 변수와 같은 값을 유지하고 함수 외부에서 수정할 수 없으므로 전역 변수보다 훨씬 깔끔합니다.

function getId() {
  if (typeof getId.counter == 'undefined') {
    getId.counter = 0;
  }
  alert(++getId.counter);
}

위의 함수를 여러 번 호출하면 카운터 값이 증가하고 전역 변수와 같은 기능 외부에서 액세스 할 수 없습니다.

IIFE (Immediately Invoked Function Expression)를 사용하여 JavaScript에서 정적 변수 만들기

IIFE는 정의되는 즉시 실행되는 함수입니다. 두 부분으로 구성됩니다.

  1. 그룹화 연산자()로 묶인 어휘 범위가있는 익명 함수.
  2. JavaScript로 직접 해석되는 함수 표현.
var incr = (function() {
  var i = 1;
  return function() {
    return i++;
  }
})();
incr();  // returns 1
incr();  // returns 2

함수가 호출 될 때마다 카운터i가 1 씩 증가합니다. i는 클래스 내부의 일반적인 정적 변수처럼 함수의 속성이기 때문에 외부에서 액세스 할 수 없습니다.

arguments.callee를 사용하여 JavaScript에서 정적 변수 만들기

arguments.callee를 사용하여 JavaScript에 정적 변수를 저장할 수 있습니다. 현재 실행중인 함수를 나타내며 함수 객체와 마찬가지로 속성을 직접 연결할 수 있습니다.

function() {
  arguments.callee.myStaticVar = arguments.callee.myStaticVar || 1;
  arguments.callee.myStaticVar++;
  alert(arguments.callee.myStaticVar);
}

이 방법은 방법 1과 매우 유사합니다. 유일한 차이점은 속성을 직접 연결하는 대신arguments.callee를 사용하여 현재 실행중인 함수에 속성을 추가하는 것입니다.

생성자를 사용하여 JavaScript에서 정적 변수 만들기

이 메소드는C++/Java/C++와 같은 강력한 유형의 객체 지향 언어와 동등한 버전입니다. 모든 인스턴스가 아닌 전체 유형에 변수를 할당하려고합니다.

function delftClass() {
  var privateVariable = 'foo';
  this.publicVariable = 'bar';
  this.privilegedMethod = function() {
    alert(privateVariable);
  };
}
delftClass.prototype.publicMethod = function() {
  alert(this.publicVariable);
};

delftClass.staticProperty = 'baz';
var myInstance = new delftClass();

여기서 생성 함수delftClass를 생성 한 다음 생성 된 인스턴스와 관련이없는 정적 속성을 할당합니다. JavaScript는 함수를 객체로 취급하므로 객체이므로 함수에 속성을 할당 할 수 있습니다. 모든 인스턴스는 정적 변수를 공유합니다.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

관련 문장 - JavaScript Variable