2012-01-23 3 views
1

자바 스크립트 :이 줄은 무엇을 의미합니까?

!function ($) 
+6

아무 것도 없습니다. 그것은 독립적 인 표현이 아닙니다. 나머지는 우리에게 보여줘! – Cameron

+0

파일의 출처, 또는 최소한 몇 줄 위/아래의 링크와 같은 컨텍스트를 제공 할 수 있습니까? – Simon

+0

값을 반환하지 않는 자체 실행 함수의 시작 부분처럼 보입니다. – Havvy

답변

2

데이터가 누락되었다고 생각하지만, 조건부 성명서 나 3 진수로 마감 처리 한 것입니다.

var test = 'Testing!'; 
(!function ($) { 
    alert($); 
    return false; 
}(test) ? alert("bad") : alert("good")); 

http://jsfiddle.net/MattLo/WpqfN/3/

+4

그건 폐쇄가 아니야. – Havvy

+1

@Havvy : 물론입니다. 모든 함수는 JS에서 클로저를 만듭니다. –

+0

Matt Lo : 당신은 확실히 IIFE에 대해 옳았습니다. 그러나 '!'대신에'() '대신에 표현식의 일부로 함수를 평가할 가능성이 큽니다. [이 질문을 참조하십시오] (http://stackoverflow.com/q/8611700/1106925). 따라서 함수의 반환 결과는 무시됩니다. –

6

I는 다음과 같이 것 약간 더 완전한 버전을 내기 할 것이다 :

기본적으로
!function ($) { 
    // some code 
}(jQuery); 

위에서 익명 함수를 위해 ! 연산자를 사용은 다음과 같이 해석 즉시 호출 할 수있는 함수 표현식. !을 삭제하고 이름이 없기 때문에 잘못된 함수 선언 (또는 원하는 용어에 따라 function 문)이 잘못되었습니다. 이 작업을 수행하는 더 일반적인 방법은 괄호에 넣어 것입니다 :

(function ($) { 
    // some code 
})(jQuery); 

그러나 어떤 사람들은 괄호보다는 !를 사용하여 문자를 저장하려면.

이렇게 코드를 사용하는 한 가지 이유는 전역 범위에서 끝나지 않는 일부 작업 변수를 만들 수 있기 때문입니다. 또는 익명 함수 내에서 전역 범위에 있지만 익명 함수 범위에서 개인 변수에 액세스 할 수있는 메서드를 가진 개체를 만들 수 있습니다. $ 인수에 관한

, 난 그냥 인수 이름 $를 사용하는 경우이 공통이기 때문에 jQuery 함수에 매개 변수로 전달 될 것 같은데요. 그 이유 중 하나는 jQuery를 사용하는 것과 동시에 $을 정의하는 다른 라이브러리를 사용할 수 있으므로이 블록 내에서 jQuery에 대해 $을 사용하는 것입니다.

관련 문제