불활성 함수 정의 모드 사용 방법 1 / 3 페이지
워밍업 문제
함수 foo 를 만 듭 니 다. Date 대상 을 되 돌려 줍 니 다. 이 대상 은 foo 가 처음으로 호출 된 시간 을 저장 합 니 다.
방법 1: 상고 시대 의 기술
이 가장 초라 한 솔 루 션 은 Date 대상 을 저장 하기 위해 전역 변수 t 를 사용 합 니 다.foo 가 처음 호출 될 때 t 에 시간 을 저장 합 니 다.다음 재 호출, foo 는 t 에 저 장 된 값 만 되 돌려 줍 니 다.
var t;
function foo() {
if (t) {
return t;
}
t = new Date();
return t;
}
하지만 이런 코드 는 두 가지 문제 가 있다.첫째, 변수 t 는 불필요 한 전역 변수 이 고 foo 호출 간격 이 변 경 될 수 있 습 니 다.둘째, 호출 할 때 이 코드 들 의 효율 은 최적화 되 지 않 았 다. 매번 호출 되 기 때문이다. foo 는 모두 값 조건 을 구 해 야 합 니 다.비록 이 예 에서 값 을 구 하 는 조건 은 결코 비효 율 적 이지 않 지만 현실 세계 의 실천 예 에서 매우 비 싼 조건 으로 값 을 구 하 는 경우 가 많다. 예 를 들 어 if - else - else -... 의 구조 에서.
방법 2: 모듈 모드
우 리 는 Cornford 덕분 이 라 고 여 겨 질 수 있다. 화해시키다 Crockford 의 모듈 모델 로 첫 번 째 방법의 결함 을 보완 한다.패 키 지 를 사용 하면 전역 변수 t 를 숨 길 수 있 습 니 다. foo 내 코드 만 접근 할 수 있 습 니 다.
var foo = (function() {
var t;
return function() {
if (t) {
return t;
}
t = new Date();
return t;
}
})();
그러나 이것 은 여전히 호출 시의 효율 을 최적화 시 키 지 못 했다. 왜냐하면 매번 foo 를 호출 할 때마다 값 을 구 하 는 조건 이 필요 하기 때문이다.
비록 모듈 모드 는 강력 한 도구 이지 만, 나 는 이런 상황 에서 그것 이 잘못 사용 되 었 다 고 굳 게 믿는다.
방법 3: 함수 대상
JavaScript 의 함수 도 대상 이기 때문에 속성 을 가 질 수 있 습 니 다. 우 리 는 이 를 통 해 모듈 모델 과 질 이 떨 어 지지 않 는 해결 방안 을 실현 할 수 있 습 니 다.
function foo() {
if (foo.t) {
return foo.t;
}
foo.t = new Date();
return foo.t;
}
일부 상황 에서 속성 을 가 진 함수 대상 은 비교적 뚜렷 한 해결 방안 을 만 들 수 있다.나 는 이 방법 이 이념 적 으로 모델 모듈 방법 보다 더욱 간단 하 다 고 생각한다.
이 해결 방안 은 첫 번 째 방법 중의 전역 변수 t 를 피 했 지만 foo 가 매번 호출 할 때마다 가 져 오 는 조건 의 값 을 해결 할 수 없습니다.
1, 2, 3 다음 페이지 전문 읽 기
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.