在另一个函数内调用函数

时间:2012-01-05 14:40:15

标签: javascript

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()进行哪些更改

4 个答案:

答案 0 :(得分:3)

您必须将该函数分配给在所需范围内可见的变量:

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

  someName = function(){

  }

  someName() // gets called

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

或者如果您希望它是一个全局变量(在所有范围内都可见),您可以将其固定到窗口对象:

window.someName = function(){};

请注意,这仅在执行S.ui.createpulldown函数(thx,pimvdb)后才有效。

答案 1 :(得分: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();

答案 2 :(得分:0)

somename移到定义它的函数之外。如果要在多个位置使用它,请将其放在命名空间的相应部分。

答案 3 :(得分:0)

您无法在someName()函数之外调用函数s.ui.createpulldown