2013-06-05 3 views
0
var VarHere; 

(function (VarHere) { 
    // Code here  
    var SomeView = Backbone.View.extend({}); 

    $(function() { 
     VarHere.SomeController = new SomeView({ 
      el: $someContainer 
     }); 
    }); 
})(VarHere || (VarHere = {})); 

이 스 니펫에는 어떤 현상이 있습니까? 일부 BackBone js 구현에서 사용 된 것을 보았습니다.jQuery 스 니펫에 대한 추가 정보

는 내가 jQuery를 준비 블록 내부의 물건이 무엇을 알고, 기본적으로 VarHere을 설정하지만 (기능 (VarHere) {와에 대한 모든 부분을 닫는 무엇인가? 그것의 의미가 무엇입니까?

답변

2

그것을 익명 함수 느릅 나무는 자동으로 사용

function(param){...} //this is anonymous function 

정의 된 경우 PARAM로 VarHere 전달 또는 빈 객체라고 :

(function(param){...})(param) //make this function called passing param as parameter of this anonymous function 

을 사용하는 이유?

이 방법을 사용하면 매개 변수 VarHere이 호출 된 함수 내에 정의되어 있는지 확인할 수 있습니다.

일반적으로 jQuery 플러그인을위한, 당신도 참조 : 여기

(function(param, undefined){...})(param) 

당신이 함수 내에서 정의되지 않은해야 할 것은 당신이 될 것으로 기대 것입니다. 두 개의 매개 변수가 필요한 함수에 하나의 매개 변수 만 전달하고 두 번째 매개 변수는 'undefined'입니다.

이것은 자바 스크립트에서 undefined이 (가) var undefined = "something i don't expect"; 인 보호 된 키워드가 아니기 때문에 가능합니다.

물론이 함수는 클로저를 작성합니다. 내부에서 선언 된 모든 변수는 전역 범위에서 볼 수 없습니다.

관련 문제