2012-02-06 4 views
6

나는 한 줄을 제외한 모든 플러그인 코드를 얻습니다. 검색 엔진이 작동하는 방식 때문에 실제로 내 질문을 검색 할 수 없습니다.트위터 부트 스트랩 플러그인 이해하기 (jQuery)

문제는 도대체 무엇이이입니다!

(!function($) {/*....*/})(jQuery); 

는 왜 말하는가 기능 ($) ?? 나는 $.noConflict()의 동일한 효과를 추측하고 있지만 그 이유는 우리가 단지 (function($) {/*...*/})(jQuery);을 사용하여 달러 기호를 우리의 기능 블록에 래핑하는 이유가 아닙니다. 나는 내가 여기서 벗어나는 길일 수 있다는 것을 완전히 알고있다. 나는 여전히 jQuery/js의 중간이다.

누군가가 함수문 앞에 NOT 연산자의 효과를 알려 주시면 감사하겠습니다.

편집 : 내가 부트 스트랩 (!function($) ...)을 가지고 있지만 단지 !function($)... 되는하지만 너희들은 그것을 실현에 나에게 도움이되지 간과()

+0

전에는 본 적이 없어요. –

+0

@LightnessRacesinOrbit yea 체크 아웃 http://twitter.github.com/bootstrap/assets/js/bootstrap-tooltip.js – dhazelett

+0

"느낌표 기능 정의 javascript"에 대한 Google의 첫 번째 결과는 .... –

답변

3

그래서이 두 단지의 대안임을 나타납니다 여기에있는 일들. 모든 것이 즉시 실행되는 익명의 함수로 싸여 있습니다. 이것은 작성자가 함수와 변수를 선언 할 때 기본적으로 전역 변수가 아니도록 라이브러리의 범위를 작성하는 것입니다.

지금까지 나와 함께. Ok 다음은 전체 ($){...}(jQuery) 것입니다. 여기서 말하는 것은 jQuery 라이브러리를 $이라는 매개 변수로 익명 래퍼 함수에 전달하는 것입니다. 따라서 익명 기능의 범위에서 을 사용하여 jQuery을 참조 할 수 있습니다. 99 %의 시간 jQuery가 이미 전역 범위에서 $으로 정의되었지만 기능 범위 내에서 전역 변수를 참조하는 것으로 간주되는 잘못된 형식으로 인해이 방법을 사용하면 모범 사례가됩니다. 매개 변수.

아직 거기에 있습니까? 느낌표 : Javascript에는 프로그램의 첫 번째 줄이 표현식이어야한다는 규칙이 있습니다 (예 : 함수 선언 일명 성명이 아님). ! 저자는 선언문을 표현식 (false를 반환)으로 변환합니다. 그러나이 경우에는 나는 생각하지 않는다! 선언은() 안에 싸여지고 즉시 실행되기 때문에 실제로 필요합니다. (함수 호출은 표현식입니다.)

+0

사실, 이미 표현식입니다. '!'는 중복됩니다. 선언문을 괄호 안에 감싸는 것은 대체적이지만, 저자는 어떤 이유에서든 두 가지를 모두 마쳤습니다. 그리고 프로그램의 첫 번째 줄에 대해 이야기 할 때 여러분이 말하는 내용을 알지 못합니다. 실제로 Javascript 스크립트의 대다수는 확실한 진술로 시작합니다. –