이 둘의 차이점은 무엇입니까?
$(document).ready(function(){ ... });
(function(){ ... })();
이 두 함수가 동시에 호출됩니까? 브라우저에서 HTML 페이지 전체를 렌더링 할 때 document.ready가 트리거되지만 두 번째 기능 (자체 호출 익명 기능)은 어떻습니까? 브라우저가 페이지 렌더링을 완료하기를 기다리거나 페이지가 나타날 때마다 호출됩니까?
이 둘의 차이점은 무엇입니까?
$(document).ready(function(){ ... });
(function(){ ... })();
이 두 함수가 동시에 호출됩니까? 브라우저에서 HTML 페이지 전체를 렌더링 할 때 document.ready가 트리거되지만 두 번째 기능 (자체 호출 익명 기능)은 어떻습니까? 브라우저가 페이지 렌더링을 완료하기를 기다리거나 페이지가 나타날 때마다 호출됩니까?
답변:
$(document).ready(function(){ ... });
또는 짧다 $(function(){...});
이 함수는 예를 들어 요소 쿼리를DOM is ready
시작할 수 있을 때 호출됩니다 . DOM이 실제로 준비되었는지 확인하기 위해 다른 브라우저에서 다른 방법을 사용합니다..ready()
(function(){ ... })();
이는 브라우저가 사용자를 해석 할 때 가능한 빨리 자신 을 호출 하는 함수 일뿐ecma-/javascript
입니다. 따라서 DOM elements
여기에서 성공적으로 행동 할 가능성은 거의 없습니다 .
(function(){ ... })();
JS 코드가 가능한 빨리 실행되지 않는 것과 관련하여 혼란 스럽 습니까? alert()
SIAF 내부 또는 외부에서 말하면 효과가 동일하지 않습니까?
$(document).ready(function() { ... });
단순히 ready
문서를로드 할 때 이벤트가 트리거되도록 해당 기능을 문서 의 이벤트에 바인딩하기 만하면 됩니다.
(function($) { ... })(jQuery);
실제로 Javascript의 구성체이며 코드의 모든 부분은 jQuery
객체를 function($)
매개 변수 로 전달 하고 함수를 실행하는 것이므로 해당 함수 내에서 $
항상 jQuery
객체를 참조 합니다. 이는 네임 스페이스 충돌 등을 해결하는 데 도움이 될 수 있습니다.
따라서 # 1은 문서가로드 될 때 실행되고 # 2는 즉시 실행되며 jQuery
개체 이름 $
은 속기입니다.
DOM (문서 객체 모델)이 JavaScript 코드를 실행할 준비가되면 다음 코드가 실행됩니다.
$(document).ready(function(){
// Write code here
});
위 코드의 약식은 다음과 같습니다.
$(function(){
// write code here
});
아래 표시된 코드는 자체 호출 익명 JavaScript 기능이며 브라우저가 해석하자마자 실행됩니다.
(function(){
//write code here
})(); // It is the parenthesis here that call the function.
아래에 표시된 jQuery 자체 호출 함수는 전역 jQuery 객체를 인수로 전달합니다 function($)
. 이를 통해 $
정의의 글로벌 범위를 탐색 할 필요없이 자체 호출 기능 내에서 로컬로 사용할 수 있습니다. jQuery는을 사용하는 유일한 라이브러리가 아니므로 $
잠재적 인 이름 충돌이 줄어 듭니다.
(function($){
//some code
})(jQuery);
$(function() {});
동등하다$(document).ready(function() {});