Javascript 如何从另一个函数调用正在使用window.onload的函数

Javascript 如何从另一个函数调用正在使用window.onload的函数,javascript,function,return,Javascript,Function,Return,当用户单击一个调用myFunction的按钮时,我尝试再次使用questionFunction(),但我得到一个错误“questionFunction未定义” window.onload = function questionFunction() { var questionText = document.getElementById("question").innerHTML = randomNumber1 + " " + operationArray[randomOperation1]

当用户单击一个调用myFunction的按钮时,我尝试再次使用questionFunction(),但我得到一个错误“questionFunction未定义”

window.onload = function questionFunction() {
  var questionText = document.getElementById("question").innerHTML = randomNumber1 + " " + operationArray[randomOperation1] + " " + randomNumber2 + " " + operationArray[randomOperation2] + " " + randomNumber3;
}

function myFunction() {
return questionFunction();
}

我不希望在加载时更改文本,也不希望在用户单击调用myFunction()时再次更改文本,因为函数表达式没有将函数的标识符添加到它出现的作用域中(只有函数声明才能这样做),所以会出现该错误

简单的答案是将其改为函数声明:

function questionFunction() {
  var questionText = document.getElementById("question").innerHTML = randomNumber1 + " " + operationArray[randomOperation1] + " " + randomNumber2 + " " + operationArray[randomOperation2] + " " + randomNumber3;
}
window.onload = questionFunction;
由于这为函数添加了一个标识符,现在您可以像在
myFunction
中那样调用它

function questionFunction() {
  var questionText = document.getElementById("question").innerHTML = randomNumber1 + " " + operationArray[randomOperation1] + " " + randomNumber2 + " " + operationArray[randomOperation2] + " " + randomNumber3;
}

window.onload = questionFunction;

function myFunction() {
  return questionFunction();
}
这会奏效的。 由于函数作用域错误,导致出现错误

您可以在此处阅读:


只需声明QuestionFunction,并在需要的地方重用此函数

function questionFunction() {
    var questionText = document.getElementById("question").innerHTML = randomNumber1 + " " + operationArray[randomOperation1] + " " + randomNumber2 + " " + operationArray[randomOperation2] + " " + randomNumber3;
}
window.onload = questionFunction;

function myFunction() {
    return questionFunction();
}