我是一个总的初学者,尝试编写代码以滚动到一系列分支d100表上(第一个表的结果确定下一个要滚动的表,依此类推)。
我通过将其全部作为一个函数编写来使其工作,但是由于我想多次循环访问一个特定的表,同时仍引用上一个表的结果,因此我希望将其作为系列嵌套函数。
我遇到的问题是,如果我将用作一个函数的相同代码嵌套到父函数中的一个函数中,则EDIT: yearResults
现在正在写入HTML,但是{ {1}}返回为未定义状态
有没有办法使我的作品生效?这是实现这一目标的愚蠢方法吗?谢谢您的帮助。
monthResults
答案 0 :(得分:2)
您的条件有误:
knex
应该是:
knexfile
请记住对代码中的所有范围检查执行此操作。
此外,考虑到代码中的注释为真(if (yearRoll >= 1 && <= 50) {
),您可以继续删除if (yearRoll >= 1 && yearRoll <= 50) {
和random number between 1 and 100
检查。
答案 1 :(得分:0)
是的,嵌套函数将有权访问在父函数中声明的变量。
但是,这可能不是您想要的,因为很容易意外地覆盖其中一个值。
相反,请考虑将其他功能分解为各自范围内的单独功能。请参见下面的示例(进行了一些小的修改,以消除语法错误):
function fullRoll() {
var yearResults = annualTable();
var monthResults = monthlyTable(yearResults);
document.getElementById('annual').innerHTML = yearResults;
document.getElementById('month1').innerHTML = monthResults;
}
function annualTable() {
var yearRoll = 23; //*random number between 1 and 100//*
if (yearRoll >= 1 && yearRoll <= 50) {
return "x";
} else if (yearRoll >= 51 && yearRoll <= 100) {
return "y";
}
}
function monthlyTable(yearResults) {
if (yearResults == "x") {
var monthRoll = 72; //*random number between 1 and 100//*
if (monthRoll >= 1 && monthRoll <= 100) {
return "a";
}
} else if (yearResults == "y") {
var monthRoll = 23; //*random number between 1 and 100//*
if (monthRoll >=1 && monthRoll <=100) {
return "b";
}
}
}