2012-01-05 7 views
1
S.ui.createpulldown = function() { 
    function someName(){ 
    } 
    someName() // gets called 
} 
someName() // does not get called, when outside because of scope issue. 

Я хочу назвать эту функцию за пределами функции s.ui.createpulldown. Можно ли, на какие изменения я должен сделать, чтобы function someName()вызов функции внутри другой функции

+0

Почему вы не определили 'someName' вне этого? –

ответ

3

вы должны присвоить функцию переменной, которая видна в нужном объеме:

//... 
var someName; 
S.ui.createpulldown = function() { 

    someName = function(){ 

    } 

    someName() // gets called 

} 
someName(); // gets called also 
//... 

или если вы хотите, чтобы быть глобальным переменный (видимый во всех областях), вы можете прикрепить его к объекту окна:

window.someName = function(){}; 

Обратите внимание, что это будет работать только после выполнения функции S.ui.createpulldown (ТНХ, pimvdb).

+1

Поскольку он стоит, он не будет вызван. Сначала вам нужно выполнить 'createpulldown'. – pimvdb

3

Это проблема обзора. Вы не можете получить доступ к somefunction, потому что это локальная переменная createPullDown, так же, как i в следующем примере

function pulldown(){ 
    for(var i=0; i<n; i++){ ... } 
} 

i; //can't use "i" here! 

Если вы хотите, чтобы somename ве видно вне функции вы должны объявить его вне, или передать его кто-либо, который виден снаружи или задает свойство объекта, видимого снаружи;

var someFunction; 
var someObj = {}; 

S.ui.createpulldown = function() { 

    function someName(){ 

    } 

    someFunction = someName; 
    someObj.func = someName; 

} 

S.ui.createpulldown(); 

someFunction(); 
someObj.func(); 
+0

Если функция someName() имеет другую функцию onload, которая не будет вызвана. – theJava

0

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

0

Вы не можете позвонить функции someName() за пределами функции s.ui.createpulldown.

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