본문 바로가기

자바스크립트

자바스크립트 함수 안에서 정적변수 초기화

목적

함수 내에서 한 번만 초기화가 필요한 변수를 만들고 재사용을 도모한다.


실습

- 트레디셔널한 방법

function Test(){
    if(!Test.prototype.val ){
        Test.prototype.val = "hello";
        console.log("초기화 됨");
    }
}
Test();
console.log(Test.prototype.val);
 

- 직감적인 방법

function Test(){
    if(!Test.val ){
        Test.val = "hello";
        console.log("초기화 됨");
    }
}
Test();
console.log(Test.val);

 

- 익스트림한 방법

function Test(){
    if(!arguments.callee.val ){
        arguments.callee.val = "hello";
        console.log("초기화 됨");
    }
}
Test();
console.log(Test.val);

 


설명

자바스크립트에도 static키워드가 있으나, 그것은 class를 위한 것이므로 function에서는 위와 같은 꼼수를 부린다.

참고로 필자는 익스트림한 방법을 선호한다. 왜냐하면 자기자신의 이름을 몰라도 사용할 수 있기 때문이다.

그러나 "use strict"가 발동될 경우 callee의 사용이 제한된다.

그렇다.

자바스크립트의 자유스러움을 억제하고자 하는 세력이 점점 커지고 있다.


출처

https://self-edu.tistory.com/