답변
는 차이가 없습니다. 두 경우 모두 anotherFn
이 즉시 실행됩니다.
그러나 루프에서 함수를 만들 때 즉시 함수가 자주 사용됩니다.
예 (다소 의사 코드)를 고려해
for(var i from 1..10) {
elements[i].onclick = function() {
alert(values[i]);
}
}
자바 스크립트 기능 만 범위없이 블록 범위 같이, 모든 이벤트 핸들러는 이후 값 10
있을 것 같은 i
를 공유 루프가 완료되었습니다. 따라서 모든 처리기는 values[10]
에 경고하려고합니다. 직접적인 함수를 사용하여
새 범위는 "캡처"루프 변수의 현재 값이 도입된다 :이로
for(var i from 1..10) {
(function(index) {
elements[i].onclick = function() {
alert(values[index]);
}
}(i));
}
를 다른 기능을 반환 독립 함수를 생성 읽는 것이 어려운 종종 더 나은 것입니다 :
function getHandler(value) {
return function(){alert(value);};
}
for(var i from 1..10) {
elements[i].onclick = getHandler(values[i]);
}
첫 번째는 self-invoking function (함수를 실행 함)을 정의하고 두 번째 함수는 방금 함수를 실행합니다. 두 경우 모두에 전달 된 인수는 [i]입니다.
어떤 차이가 있습니까? 아니면 프로그램이 동일하게 작동합니까? – bsr
자체 호출 함수를 설명하는 링크를 추가했습니다.이 경우에는 함수를 사용할 이유가 없습니다. – hvgotcodes
아니요,이 경우에는 차이점이 없습니다. 클로저가 실제로 비어 있기 때문입니다. – Rudie
예제의 두 인스턴스에서 값은 동일한 작업을 수행합니다. 첫 번째 방법 (자체 실행 익명 함수 사용)을 신중하게 사용하지 않으면 i
값이 증가하고 함수에 올바르게 전달되지 않는 다른 예제가 있습니다. 여기
- 1. 자바 스크립트를 사용하여 iPhone 비디오 플레이어를 닫으십시오.
- 2. 자바 스크립트를 사용하여 Acrobat Reader에서 PDF 파일을 인쇄하고 닫으십시오.
- 3. IME onEditorAction을 닫으십시오.
- 4. 웹 브라우저를 강제로 닫으십시오.
- 5. AlertDialog 상자를 닫으십시오.
- 6. 자바 스크립트로 자바 스크립트를 동적으로로드하십시오.
- 7. 자바 스크립트를 사용하여 다른 자바 스크립트를 추적 하시겠습니까?
- 8. 자바 스크립트를 사용하지 않고 자바 스크립트를 사용하여 텍스트를 텍스트로 삽입
- 9. 자바 스크립트를 호출
- 10. 이 자바 스크립트를 식별합니까?
- 11. 자바 스크립트를 타고있는 동안
- 12. 어떻게 자바 스크립트를
- 13. 자바 스크립트를 사용하는 IMEI
- 14. 어떻게 자바 스크립트를 모델링합니까?
- 15. 캐싱에서 자바 스크립트를 중지
- 16. 자바 스크립트를 사용하여 뺄셈
- 17. 는 자바 스크립트를 문
- 18. 자바 스크립트를 루비로 번역
- 19. 스팸봇은 자바 스크립트를 무시합니까?
- 20. 자바 스크립트를 업데이트 중입니다.
- 21. 자바 스크립트를 toString 특질
- 22. 자바 스크립트를 임의의 기능
- 23. 자바 스크립트를 iframe에 임베드했습니다.
- 24. 자바 스크립트를 jQuery로 변환
- 25. 자바 스크립트를 열
- 26. 자바 스크립트를 언로드해야합니까?
- 27. 자바 스크립트를 압축하는 Makefile
- 28. 자바 스크립트를 URL에 연결
- 29. 처리 창에서 플래시에서 함수를 닫으십시오.
- 30. Java에서 응용 프로그램을 열고 닫으십시오
이것은 좋은 예입니다! – Rudie
(var i from 1..10) {} –
@cf_PhillipSenn : 예 JavaScript가 아닙니다. * "이 예제를 (다소간 ** 의사 코드 **) 고려해보십시오."* –