당신이 myMethod
를 호출 할 때마다, previous
은 (var previous
) 새롭게 선언됩니다.
당신은 네 가지 가능성이 있습니다
(A) 폐쇄 만들기 (IMO 최적의 솔루션을하지만, 필요에 따라 다름) :
myMethod : (function() {
var previous = null;
return function() {
if (current > previous) {
// do this!
}
previous = current;
}
}());
함수 객체의 속성으로 previous
설정 (B) :
myMethod : function() {
if (current > foo.myMethod.previous) {
// do this!
}
foo.myMethod.previous = current;
}
foo.myMethod.previous = null;
그러나이 기능은 개체의 이름을 지정하는 데 매우 중요합니다.
는
(C)이 모델에 맞는 경우, 오브젝트 myMethod
의 속성의 속성입니다 previous
을 :
previous: null,
myMethod : function() {
if (current > this.previous) {
// do this!
}
this.previous = current;
}
(D) (A)와 유사하게, 더 높은 어딘가에 외부 previous
설정 범위 :
var previous = null;
// ...
myMethod : function() {
if (current > previous) {
// do this!
}
previous = current;
}
이것은 상위 범위를 오염시키기 때문에 좋지 않습니다.
코드를 자세히 보지 않고도 알기가 어렵지만, current
을 함수에 전달할 때 더 좋습니다.
어디에서 현재 정의되어 있습니까? "그럴 수 없다"는 것은 무엇을 의미합니까 –