함수를 입력으로 사용하는 API가 있고, 함수가 아직 배열에 추가되지 않은 경우 API에 의도적으로 함수를 배열에 추가합니다.자바 스크립트의 함수 비교
API에 대한 호출의 형식입니다:
myApiHandle.addIfUnique(function(){
myResource.get(myObj);
});
이 API는 다음과 같습니다
이제myApiHandle.addIfUnique(myFunc) {
if (myArray.indexOf(myFunc) === -1) {
return;
}
// add to array
}
예상대로이 분명 할 때마다 이후 새로운 기능이 전달되는 작동하지 않습니다 in.
내 질문은 : myApiHandle.addIfUnique 호출에 함수를 전달하면이 함수를 사용하여 배열의 기존 함수를 비교할 수 있습니까? 현재 전달되고 있습니까? 비교는 함수 이름과 객체를 비교해야하며 둘 다 같으면 함수를 배열에 추가하지 마십시오. 가능하다면 addIfUnique 호출에 또 다른 인수를 추가하는 것을 피하고 싶습니다. 그렇다면
myApiCall.addIfUnique (someFunc) {
}
의 someFunc 것입니다 : 즉
은 가능 이하입니다. 함수가 이미 myArray에 존재하는지 여부를 감지하는 API 내부의 로직은 무엇입니까?
indexOf를 사용하는 것처럼 기능이 있는지 확인할 수 있습니다. 하지만 동일한 함수를 여러 번 만들지 않기 위해 addIfUnique를 호출하는 코드를 업데이트 할 수 있습니다. –
이것은 기본적으로 나쁜 일입니다. 문제를 다른 방식으로 해결하십시오. 두 개의 다른 함수가 실제로 같은 실행인지 다른 실행인지를 구분할 방법이 없습니다.분명히 똑같은 코드를 가지고 있다면 똑같은 결과를 낳 겠지만 코드가 다르면 다른 결과를내는 것은 아닙니다. 나는 당신이 그들을 비교하기를 원할 때마다 매번 새로이 생성되는 지역 함수에서 멈추지 말라고 말하고 싶다. – jfriend00
동의합니다. 해결하려는 문제는 무엇입니까? –