2012-01-05 8 views
1

s.ui.createpulldown 함수 밖에서이 함수를 호출하고 싶습니다.다른 함수 안에 함수 호출하기

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

    someName = function(){ 

    } 

    someName() // gets called 

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

또는 당신이 원하는 경우 글로벌 될 : 그것은 내가 원하는 범위 내에서 볼 수있는 변수에 기능을 할당 할 필요가 function someName()

+0

왜 'someName'을 외부에 정의하지 않았습니까? –

답변

3

에 확인해야 어떤 변화에 가능 변수 (모든 범위에서 표시), 당신은 윈도우 객체에 고정 할 수 있습니다 : 이것은 S.ui.createpulldown 기능의 실행 (THX, pimvdb) 이후에만 작동합니다

window.someName = function(){}; 

참고.

+1

그대로 서 있지는 않습니다. 먼저'createpulldown'을 실행해야합니다. – pimvdb

3

이것은 범위 지정 문제입니다. 이 createPullDown의 지역 변수이기 때문에 당신이 somename를 원하는 당신은 외부 선언, 또는에 전달하는 데 필요한 기능을 외부에서 볼 수 적이있는 경우 다음과 같은 예를

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

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

단지 i처럼 somefunction에 액세스 할 수 없습니다 외부에서 볼 수 있거나 외부에서 볼 수있는 객체의 속성을 설정하는 사람.

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

s.ui.createpulldown 함수 외부에서 someName() 함수를 호출 할 수 없습니다.