调用在函数内定义的函数

时间:2011-07-21 23:29:49

标签: javascript function

*有没有办法调用javaSCRIPT中另一个函数内定义的函数?例如:

window.onload() = function() {
    function my_function(){
        print("Blah");
    };
};

function function_two(){
    my_function();
};

有没有办法像上面这样做(在function_two中调用my_function,即使它是在window.onload()函数中定义的)?在我的实际代码中,它也使用了raphael.js库,我正在尝试用HTML编写一个按钮,它使用onClick函数调用一个函数(如function_two)来运行window.onload()中定义的函数(喜欢my_function)。但是控制台说my_function是未定义的。

3 个答案:

答案 0 :(得分:12)

正如Zeychin和Trevor所说,功能的范围是这里的核心问题。我以为我会提供另一种方式来处理它。基本上,您可以将函数设置为更高范围内的变量(即onload和function_two函数都可以访问),同时在onload函数中将其定义为最初的函数:

var myFunction; //This is the placeholder which sets the scope

window.onload() = function() {
   myFunction = function() { //Assign the function to the myFunction variable
      print('blah');
   }
}

function function_two() {
   myFunction();
}

如果您在onload事件中只知道myFunction所需的信息,这可能会很方便。

答案 1 :(得分:3)

window.onload = function() {
    my_function()
};

function my_function(){
    alert("Blah");
};

function function_two(){
    my_function();
};

答案 2 :(得分:3)

你不能做你要做的事。 函数my_function()的范围仅在匿名函数function()内。当方法未执行时,它不在范围内,因此这是不可能的。 特雷弗的答案是这样做的方法。