[javascript] $ (문서). 준비된 속기

다음과 같은 속기 $(document).ready 입니까?

(function($){

//some code

})(jQuery);

이 패턴이 많이 사용되는 것을 보았지만 이에 대한 참조를 찾을 수 없습니다. 의 약어 인 경우 $(document).ready()작동하지 않는 특별한 이유가 있습니까? 내 테스트에서 항상 준비 이벤트 전에 시작되는 것 같습니다.



답변

줄임말 $(document).ready(handler)$(handler)( handler기능이있는 곳 )입니다. 여기를 참조 하십시오 .

귀하의 질문에있는 코드는와 아무런 관련이 없습니다 .ready(). 오히려 jQuery 객체를 인수로 사용하여 즉시 호출되는 함수 표현식 (IIFE)입니다. 그 목적은 최소한 $변수 의 범위를 자체 블록 으로 제한하여 충돌을 일으키지 않는 것입니다. 일반적으로 jQuery 플러그인이 사용하는 패턴을 확인합니다 $ == jQuery.


답변

속기는 다음과 같습니다.

$(function() {
    // Code here
});


답변

올바른 속기는 다음과 같습니다.

$(function() {
    // this behaves as if within document.ready
});

게시 한 코드…

(function($){

//some code

})(jQuery);

… 익명 함수를 작성 jQuery하고 arg로 전달하여 즉시 실행합니다 $. 효과적으로 $하는 것은 이미 함수의 내부 코드를 가져 와서 정상적인 것처럼 실행하는 것 입니다 jQuery. :디


답변

이것은 속기입니다 $(document).ready().

게시 한 코드는 내부 코드를 상자에 $넣고 전역 네임 스페이스를 오염시키지 않고 jQuery를 사용할 수있게 합니다. 한 페이지에서 프로토 타입과 jQuery를 모두 사용하려는 경우에 사용할 수 있습니다.

여기에 문서화 : http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immediately-invoked-function-expression


답변

이 특정 라인은 jQuery 플러그인의 일반적인 래퍼입니다.

“… 플러그인이 달러 기호를 사용하는 다른 라이브러리와 충돌하지 않도록하려면 jQuery를 달러 기호에 매핑하는 자체 실행 함수 (클로즈)에 jQuery를 전달하는 것이 가장 좋습니다. ‘ 실행 범위 내에서 다른 라이브러리로 덮어 쓰지 않아야합니다. “

(function( $ ){
  $.fn.myPlugin = function() {
    // Do your awesome plugin stuff here
  };
})( jQuery );

에서 http://docs.jquery.com/Plugins/Authoring


답변

준비를위한 다중 프레임 워크 안전 속기는 다음과 같습니다.

jQuery(function($, undefined) {
    // $ is guaranteed to be short for jQuery in this scope
    // undefined is provided because it could have been overwritten elsewhere
});

이는 jQuery가 $and 및 undefined변수 를 사용하는 유일한 프레임 워크가 아니기 때문입니다.


답변

더 짧은 변종조차 사용하는 것입니다

$(()=>{

});

어디 $jQuery를 뜻하고 ()=>{}소위된다 ‘기능을 화살표’ 상속 this폐쇄에서. (그래서 this당신은 아마 window대신에 있을 것 입니다 document.)