간단히 말하면
(function($){ //code })(jQuery)
익명 함수를 선언합니다. 즉, jQuery 객체를 함수에 매개변수로 전달합니다.
예를 들어주세요
// 全局 var str = "全局字符串..."; (function () { // 第1层 (function () { // 第2层 (function () { // 第3层 (function () { // 第4层 层数越多,访问全局越慢 console.time('全局'); for (var i=0; i<1e6; i++) { str += Math.random().toString().substr(2, 2); } console.timeEnd('全局'); })(); })(); })(); })(); // 局部 (function () { // 第1层 (function () { // 第2层 (function () { // 第3层 (function () { // 第4层 var str = "内部字符串..."; var random = Math.random; console.time('内部'); for (var i=0; i<1e6; i++) { str += random().toString().substr(2, 2); } console.timeEnd('内部'); })(); })() })(); })();
코드를 실행하면 효과를 볼 수 있을 것입니다. 상대적으로 느리므로 잠시 기다려주세요.
방금 테스트한 결과 메모리가 작은 일부 컴퓨터에서는 브라우저가 쉽게 충돌할 수 있다는 사실을 발견했습니다.
크롬은 문자열까지 캐싱할 정도로 무장되어 있지만 별 효과가 없습니다
속도와는 상관이 없는 것 같아요.
(function($){ // code })(jQuery)
jQuery 플러그인이 많고 사용하는 변수나 메소드 이름이 다른 플러그인과 동일한 이름인지 확신할 수 없으므로 모든 플러그인 코드를 익명 함수로 캡슐화해야 합니다. ;
플러그인은 jQuery를 사용하기 때문에 jQuery를 익명 함수로 가져와서 $ 변수 참조를 사용해야 합니다(모두가 $ 사용에 익숙하기 때문입니다). 물론 $를 전역적으로 사용할 수도 있지만 첫 번째 조건은 충족될 수 없습니다.
캡슐화된 코드를 실행해야 하므로 익명 함수를 실행하고 jQuery 매개변수를 전달해야 합니다.
요약
사실 $ 기호를 보호하기 위한 것입니다. 외부에서 $를 방해하는 다른 라이브러리를 도입하더라도 익명 함수의 $는 jQuery라는 사실을 방해하지 않습니다. 매개변수.