Вызов функции, определенной внутри функции

* Есть ли способ вызвать функцию, определенную внутри другой функции в javaSCRIPT? Например:

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

function function_two(){
    my_function();
};

Есть ли способ сделать что-то вроде выше (вызов my_function в function_two, хотя он определен внутри функции window.onload())? В моем фактическом коде, который также использует библиотеку raphael.js, я пытаюсь написать кнопку в HTML, которая использует функцию onClick, вызывает функцию (например, function_two), которая выполняет функцию, определенную в window.onload() ( как my_function). Однако консоль говорит, что my_function - undefined.

Ответ 1

Объем функции является основной проблемой здесь, как сказали Зейчин и Тревор. Я думал, что предлагаю другой способ справиться с этим. В принципе, вы можете установить свою функцию в переменную, которая в более высокой области (то есть доступна как для функций 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();
}

Это может быть удобно, если вы только знаете информацию, которая вам нужна для myFunction, когда вы находитесь в событии onload.

Ответ 2

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

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

function function_two(){
    my_function();
};

Ответ 3

Вы не можете делать то, что вы просите. Область функции my_function() находится только в анонимной функции, function(). Он выпадает из области действия, когда метод не выполняется, поэтому это невозможно. Тревор ответ - это способ сделать это.