나는의 jQuery UI 코드를보고 있었다, 나는 모든 파일이 같은 구조로 시작하는 것을 발견 : jQuery
전에 세미콜론이 왜, 왜 논리적 OR 이루어지고 있습니다 :자바 스크립트의 결과는 무엇입니까?
;jQuery.ui || (function($) {
내 질문은 ?
일예로 ... 하나 jQuery.ui 존재, 또는이 함수를 정의 :
JRH는
영어나는의 jQuery UI 코드를보고 있었다, 나는 모든 파일이 같은 구조로 시작하는 것을 발견 : jQuery
전에 세미콜론이 왜, 왜 논리적 OR 이루어지고 있습니다 :자바 스크립트의 결과는 무엇입니까?
;jQuery.ui || (function($) {
내 질문은 ?
일예로 ... 하나 jQuery.ui 존재, 또는이 함수를 정의 :
JRH는
영어왜 jQuery를 앞에 세미콜론이 위의 라인의 분류 버전의 페이지 끝까지 스크롤 할 수 있었다?
안전한 파일 연결을 보장하기 위해 세미콜론이 있습니다. (라이브러리 및 라이브러리 구성 요소는 자주 단일 파일로 묶입니다.)
왜 논리 OR이 수행됩니까?
오른쪽의 자체 호출 익명 기능은 명령문의 왼쪽이 거짓 값으로 평가되는 경우에만 실행됩니다. 따라서 jQuery.ui
이 페이지에 이미 존재하면 함수가 실행되지 않습니다.jQuery.ui
이 아직 존재하지 않는 경우에만 실행됩니다.
hehe, "거짓", 좋은. 그것은 false로 평가되는 값을 설명하는 멋진 방법입니다. 나는 그것을 좋아합니다. –
내 용어가 아닙니다 ... Doug Crockford 비디오에서 들었을 것 같습니다. – James
, 코드 행은 말한다 jQuery.ui이 정의되어 있지 않으면 함수가 작성됩니다.
초기 세미콜론은 효과가 없어야합니다. 코드 문 끝을 구분합니다.
파일을 여러 번 포함하고 평가할 수 있도록 논리 OR이 수행되고 자체적으로 크롤링되지 않는다고 생각합니다. 다시로드하면 jQuery.ui가 이미 정의되고 뭐든지해라.
누군가가 스크립트 태그를 추적하지 못하면 실수로 파일을 여러 번 포함 할 수 있습니다.
세미콜론의 경우 마지막 문장이 세미콜론으로 끝나지 않아도 파일이 다른 파일에 포함 되어도 작동하는지 확인할 수 있습니다.
가짜 세미콜론은 피해를주지 않으며 누락 된 세미콜론 일 수 있습니다.
나는 ;
이 자바 스크립트 패커가 라인을 망쳐 놓지 않도록하는 것이라고 생각하지만, 그게 내가 가진 최선이다.
논리가 있거나 jQuery.ui
이 두 번 선언되지 않도록해야합니다. 자바 스크립트는 단락을 일으키므로 왼손면이 truthey(감사합니다 JP!) 인 것으로 확인되면 ||
의 오른쪽을 평가하지 않습니다..
보너스 구문 해독, 익명 함수에 전달 된 $는 jQuery에 대한 참조입니다. 하나는
:-) 클릭하기 전에 나는 그래서, 여기에
; // extra semi colon to ensure correct concatenation and minifying
jQuery.ui // check if the variable called jQuery.ui is truthey
|| // OR if jQuery.ui isn't defined
(function($) {...})(jQuery); // define and execute an anonymous function
// passing in the conflict safe jQuery
// as the parameter called $
질문의 첫 번째 질문은 [JavaScript 라이브러리의 주요 세미콜론은 무엇입니까?] (0120-337-0048572) – Bergi
또는 그 반대의 예입니다. 당신이 링크 한 질문은 이보다 몇 개월 더 늦었습니다. – jrharshath
제가 링크 한 질문은 더 나은 답변으로 주제에 관한 표준적인 것입니다. 그래서 그것이 제가 링크 된 이유입니다. – Bergi