2011-03-11 8 views
1

나는 GM 스크립트를 만들고 있는데 가능한 한 적은 지구 오염으로 어떻게 설정해야하는지에 대한 질문이있었습니다.greasemonkey 샌드 박스 및 범위 질문

나는 하나의 주 기능을 사용할 수 있으며 주 기능 내에서 사적인 기능을 많이 가지고있다. 이런 식으로 뭔가 : 나는 오히려 var f1 = function(a) {...} 또는 내가이 방법을 사용해야합니다 궁금

function main(a, b, c) { 
    /* CODE */ 
    f1(a); 
    /* CODE */ 
    f2(a + c); 
    ... 
    function f1(a) { 
     /* CODE */ 
    } 
    function f2(a) { 
     /* CODE */ 
    } 
} 

?

또한 나는 function main(a, b, c) 또는 var main = function(a, b, c)

그렇게 나는 길에서 내 개인 기능을 내 코드를 작성할 수있는 코드를 실행하기 전에 구문 분석 될 경우 I는 생각할 수있는 둘 사이의 유일한 차이점 사용해야합니다 . 어떤 방법 으로든 이름 충돌이있을 수 있습니까?

+0

:

은 아마 당신은 뭔가를 원한다. 메인 페이지의 전역 범위에 접근/오염시키는 유일한 방법은'unsafeWindow'에 접근하는 것입니다. – Thai

+0

@ 타이 그래,하지만 다른 스크립트에서도 이것을 사용할 계획이다. – qwertymk

답변

3

I 차라리 VAR F1을 사용해야 궁금 = 함수 (a) {...} 또는 I가있는 방법?

당신이, function f1(){}이 방법 다음 함수는 이름 코드를 디버깅하는 데 유용합니다 f1이 때문이다.

또한 나는 main 함수 (A, B, C) 또는 VAR 주 = 함수를 사용한다 (A, B를, C)

다른 스크립트를 수 있도록하려는 경우 당신이 이름 main을 사용해야합니다

스크립트를 사용하십시오. 이전 방법은 내가 위에 준 이유 때문에 더 나은 tho입니다. 각 스크립트는 자신의 샌드 박스 (자신의 전역 범위)가, 그리스 몽키에서

(function(){ 
    function f1() {} ; 
    function f2() {}; 
})() 
1

두 가지 방법간에 중요하지 않습니다. 모든 이름 충돌은 어느 쪽이든 발생할 수 있습니다. var f1 = function(a) {}을 수행하는 경우 전화를 걸기 전에 주 기능 맨 위에 정의해야합니다.

var main = function(a, b, c) { 
    var f1 = function(a) { 
     /* CODE */ 
    }; 
    var f2 = function(a) { 
     /* CODE */ 
    }; 
    /* CODE */ 
    f1(a); 
    /* CODE */ 
    f2(a + c); 
};