песочница greasemonkey и вопрос о сфере применения - PullRequest
1 голос
/ 11 марта 2011

Я создаю сценарий GM, и у меня возник вопрос о том, как настроить его с минимально возможным глобальным загрязнением.

У меня есть 1 основная функция, которая доступна, и несколько частных функций внутри основногоодин.Примерно так:

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

Мне было интересно, стоит ли мне использовать var f1 = function(a) {...} или как у меня?

Также мне следует использовать function main(a, b, c) или var main = function(a, b, c)

Единственное различие между этими двумя понятиями, о котором я могу подумать, заключается в том, будет ли он проанализирован перед выполнением какого-либо кода, чтобы я мог написать свой код с моими частными функциями.Есть ли вероятность конфликта имен в любом случае?

Ответы [ 2 ]

3 голосов
/ 11 марта 2011

Мне было интересно, лучше ли мне использовать var f1 = function (a) {...} или как у меня?

Как у вас, function f1(){}, потому что тогда функция будет иметь имя f1, которое полезно для отладки кода.

Также я должен использовать функцию main (a, b, c) или var main = function (a, b, c)

вам следует использовать имя main, если вы планируете, чтобы другие сценарии использовали ваш сценарий. Первый способ лучше по той причине, которую я привел выше.

Может быть, вы хотите что-то вроде:

(function(){
   function f1() {} ;
   function f2() {};
})()
1 голос
/ 11 марта 2011

Это не должно иметь значения между двумя способами. Любые конфликты имен могут возникнуть в любом случае. Если вы сделаете 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);
};
...