(function($){~})(window.jQuery);뭐야?주문을 해설하다

예?지금까지 jQuery 인코딩이 됐나요?
인생은 어렵고 고생스러우며, 사람은 각양각색의 일이 있다.
jQuery 코드를 본 후, 나는 모든 스크립트가 이런 코드로 덮여 있는 것을 자주 볼 수 있을 것이라고 생각한다.
(function ($) {   
  //処理
})(window.jQuery);
야, 이 정형문과'주문'을 분리해서 복제해도 당신에게 혜택을 받을 수 있어. 어쨌든 그렇잖아. 내가 설명해 줄게.
다음 코드를 먼저 보십시오.자바스크립트를 건드린 사람이라면 누구나 다 아는 코드야.

1.


var calc = function (a, b) {
  console.log(a + b);
};
 
calc(1,2);
하고 있는 일은 다음과 같은 두 가지가 있다.
  • 두 개의 매개 변수 a, b에 대해 컨트롤러에 a+b의 함수를 표시하고 변수를 대입하는 것을 정의한다
  • 매개 변수 1, 2로 함수 집행
  • 그렇다면 1의'함수를 정의하고 변수를 대입'하는 과정에서'함수를 정의하고 변수를 대입하지 않고 직접 집행한다'는 말은 어떨까.
    코드는 다음과 같습니다.

    2.


    (function (a, b) {
      console.log(a + b);
    })(1, 2);
    
    주문의 격식에 조금 가까워졌다.
    첫 번째 함수를 둘러싼 괄호는 이전 코드로calc를 대입한 것이다.
    첫 번째 괄호로 함수를 정의한 다음 매개 변수 1, 2를 직접 건네줍니다.
    즉, 1. 코드와 2. 코드는 거의 같은 뜻이다.(기본적으로 이런 문법을 쓰면 1.의calc는 전역 변수가 된다. 함수 처리에 착안하면 완전히 같다.)
    그럼 무술
    (function ($) {
       
      //処理
     
    })(window.jQuery);
    
    뭐 하는 거야.
    달러 변수 정의 함수
    window 1을 통해 정의된 함수입니다.매개 변수로 jQuery 실행하기
    를 참고하십시오.
    이렇게 쓴 장점은 다음과 같다.

    1. 정의 함수에 명시된 변수는 외부에 영향을 주지 않는다


    javascript의 var 변수는 함수 범위입니다
    (function ($) {
      var somefunc=function(){
        //do something
      };
      var a=1;
    })(window.jQuery);
    
    등을 써도 somefunc와 a는 외부와 충돌하지 않는다.

    2. 창문을 꼭 열어라.jQuery를 대상으로 이 함수를 실행합니다


    prototype.만약 js 등을 사용한다면 전 세계 변수 $US 경쟁이 있을 수 있지만, 이러한 상황은 단순할 뿐이다
    만약
    $(function () {
     
      $('.app').on('click',function(){
        //何らかの処理
      });
    })
    
    라고 기술된다면, 이 달러가 무엇을 가리키는지, 이 문서만 보면 판단할 수 없다.
    그렇게 지도 모른다, 아마, 아마...제이스 달러를 썼을 수도 있으니까.
    물론 이런 상황에서 이 스크립트는 정상적으로 작동하지 않는다.
    그렇지만
    (function ($) {
      $(function () {
        $('.app').on('click',function(){
          //何らかの処理
        });
      })
    })(window.jQuery);
    
    라고 쓰여 있다면 윈도우입니다.이 원본에서 볼 때, 이 함수는 jQuery를 대상으로 실행된 것이다.
    이상, jQuery에서 자주 사용하는 주문을 간단하게 소개합니다.

    좋은 웹페이지 즐겨찾기