2017-09-13 17 views
-1

이상한 상황에 직면하여 문제의 원인을 파악하려고했습니다. window 객체가없는 clearInterval() 메서드를 사용했습니다. 우리의 dev 및 QA 환경에서 정상적으로 작동합니다 갑자기 QA 환경에서 clearInterval()으로 인해, 우리는 이상한 문제가 발생했습니다 ... clearInterval()window.clearInterval()으로 변경하면 이상한 동작이 수정되었습니다. 아직도 나는 그것이 일어난 이유를 이해하지 못했다. 기술적으로 두 가지 사용법 (clearInterval()window.clearInterval())이 동일하므로 다른 용도로 사용하는 이유는 무엇입니까?Window.clearInterval() and clearInterval()

+0

어딘가에 'clearInterval'을 무시하지 않았습니까? – Cerbrus

+0

No.. 나는 메소드를 오버라이드하지 않았다. 지난 주 밤까지 잘 작동하는 기본 메소드를 사용했다. 갑자기 작동하지 않는다. – honey

+0

그래서 우리에게 [mcve]를 제공 할 수 있습니까? 문제를 재현 할 수 없다면 문제를 해결하는 데 도움을 줄 수 없습니다. – Cerbrus

답변

-2

다른 동작은 전역 Javascript 공간 때문입니다. ,

Array.prototype.find = function() { 

} 

따라서, Array 클래스에 글로벌 추가를 만듭니다 :

Array.find = function() { 

} 

이 Array 클래스에 대한 로컬 함수를 작성하지만이 :

그것에 대해 이런 식으로 생각 다른 행동을 유도합니다.

그러나, 동일한 함수 내 완전히 다른 동작은

위해 clearInterval는 잘 작동합니다 ... 자바 스크립트에서 어떤 것들은 그냥 조금 이상하다 아마 등, 네임 스페이스로 인해 글로벌, 로컬 window.clearInterval과 같습니다. 차이는 없어야하지만, QA에 분명히 있기 때문에 아마도 네임 스페이스와 변수 공간 때문일 것입니다.

아래 답변은 맞습니다. 자바 스크립트에서 클로저라고합니다. ^ | 위의 설명이 잘못되었습니다. 그것은 폐쇄와는 아무런 관련이 없습니다, 사과드립니다.

감사합니다. Cerebrus.

+0

이것은 클로저와 아무 관련이 없습니다. – Cerbrus

+0

좋아요, 미안 해요, 그냥 야생의 추측을하고 있었는데, 그 이유는 ... – TheCodeCrafter