목적
함수 내에서 한 번만 초기화가 필요한 변수를 만들고 재사용을 도모한다.
실습
- 트레디셔널한 방법
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의 사용이 제한된다.
그렇다.
자바스크립트의 자유스러움을 억제하고자 하는 세력이 점점 커지고 있다.
출처
'자바스크립트' 카테고리의 다른 글
블로그를 방문하는 낯선이를 위한 출구버튼 (0) | 2021.12.19 |
---|---|
특정 자바스크립트 실행 중지 시키기 (0) | 2021.12.18 |