2012-02-17 2 views
0

У меня есть этот код:Могут ли «внешние» функции javascript вызвать «функции jQuery»?

(function ($) { 

    $(document).ready(function() { 
     test("hola","caracola"); 
    }); 

    function test(somevar1, somevar2) 
    { 
     alert(somevar1+ "" + somevar2); 
    } 

}(jQuery)); 

function atest2(somevar1, somevar2) 
{ 
    test(somevar1+ "" + somevar2); 
} 

при выполнении test2 функционировать результат:

ReferenceError: test is not defined 

Мой вопрос:

Как я могу назвать test2 правильно выполнить внутреннюю функцию тестирования JQuery в?

Благодаря

+3

Вам нужно будет определить 'test' вне анонимной функции. –

+1

Вы можете определить 'test()' вне функции загрузки jQuery и по-прежнему использовать его изнутри. – Brad

ответ

1

Вы должны экспортировать test в глобальную область видимости, если хотите использовать ее вне анонимной функции. Это может быть сделано в тыс образом:

(function ($) { 
    // ... 
    function test(somevar1, somevar2) { 
     alert(somevar1+ "" + somevar2); 
    } 
    window.test = test; // <-- This 
}(jQuery)); 

Большим преимуществом этого метода по сравнению с перемещением объявление функции вне анонимной функции является то, что test все еще может использовать локальные переменные, которые доступны только внутри анонимной функции.

2

test определяется только в анонимной функции, обернутые вокруг него.

По большей части определения функций должны ВСЕГДА быть вне любых анонимных функций. Конечно, есть исключения, но они применимы только к людям, которые точно знают, что они делают с закрытием.

0

Посмотрите, что это вне функции onready, и вы можете использовать его.

function test(somevar1, somevar2) 
{ 
    alert(somevar1+ "" + somevar2); 
} 

(function ($) { 

    $(document).ready(function() { 
     test("hola","caracola"); 
    }); 

}(jQuery)); 
0

вы можете вызвать функцию с помощью применить, что звонит тест с вызываемым

(function ($) { 

    $(document).ready(function() { 
     test.apply(this,["hola","caracola"]); 
    }); 

    function test(somevar1, somevar2) 
    { 
     alert(somevar1+ "" + somevar2); 
    } 

}(jQuery)); 

DEMO

0

Как заявил другими членами его ясно, что test функция может быть вызвана, если это вне анонимной функции. Это необходимо кузен путем определения test функции внутри анонимной функции ограничения объем test функции .Moreover, JQuery является удивительным framwork для JavaScript, но в конце концов его javascript так пе действует javascript snipplet WUD работать с JQuery и наоборот

Смежные вопросы